import { Input, Component, ComponentFactoryResolver, ViewContainerRef, Output, EventEmitter, OnChanges } from '@angular/core'; import { RdComponent } from '../../base/rdComponent'; @Component({ selector: 'rd-dynamic-component-loader', template: ` ` }) export class ComponentLoader extends RdComponent implements OnChanges { constructor(private loader: ComponentFactoryResolver, private view: ViewContainerRef) { super(); } @Input('rd-page-type') pageType; @Output("rd-after-init") initEvent: EventEmitter = new EventEmitter(); ngOnChanges() { if (this.pageType) { let factory = this.loader.resolveComponentFactory(this.pageType); let ref = this.view.createComponent(factory); ref.changeDetectorRef.detectChanges(); this.initEvent.emit(ref.instance); } } }