@itexpert-dev/base-universal-table
Version:
base universal table for build tables
50 lines (46 loc) • 2.01 kB
text/typescript
import {ReflectiveInjector, ComponentFactoryResolver, ViewContainerRef, Injector} from "@angular/core";
import {isNull} from "@itexpert-dev/tiny-helpers";
import {AngularInputValidator} from "../common/angularInputValidator";
import {UniversalTableCtrl} from "../../services/universalTable/universalTableCtrl";
import {BaseUniversalTableDirective} from "../common/baseUniversalTableDirective";
import {baseUniversalTableHeadersDirectiveConfig} from "./baseUniversalTableHeadersDirectiveConfig.const";
import {IUniversalTableHeaderData} from "../../../contracts/IUniversalTableHeaderData";
abstract class BaseUniversalTableHeadersDirective extends BaseUniversalTableDirective{
abstract headerIndex: number;
abstract headerData: any;
constructor(
tableCtrl: UniversalTableCtrl,
componentResolver: ComponentFactoryResolver,
viewContainer: ViewContainerRef,
private injector: Injector
){
super(
componentResolver,
viewContainer,
tableCtrl
);
}
ngOnInit(){
let validateResult = AngularInputValidator.checkRequireAttributes({
requireAttributes: ['headerIndex', 'headerData'],
directiveContext: this,
rightExample: `${baseUniversalTableHeadersDirectiveConfig.selector}(("[headerIndex]"="headerIndex", "[headerData]"="header")`
});
if(!isNull(validateResult)){
throw validateResult
}
let header = this.resolveTablePart('headers');
let injector = ReflectiveInjector.resolveAndCreate(
[{
provide: IUniversalTableHeaderData,
useValue: {
headerIndex: this.headerIndex,
headerData: this.headerData
}
}],
this.injector
);
this.viewContainer.createComponent(header, 0, injector);
}
}
export {BaseUniversalTableHeadersDirective}