UNPKG

@itexpert-dev/base-universal-table

Version:

base universal table for build tables

50 lines (46 loc) 2.01 kB
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}