Outputting array of components in Angular 2

后端 未结 2 852
广开言路
广开言路 2021-01-12 10:33

I am building a modal component in Angular 2 (and TypeScript) that will have different views/pages. It won\'t have tabs, but the concept is pretty similar. Basically I am st

2条回答
  •  日久生厌
    2021-01-12 11:11

    You can create a "component factory" as a directive that loads appropriate components using DynamicComponentLoader, based on parameters you pass from your modal.

    
    
    @Directive({ selector: 'component-factory' })
    class ComponentFactory {
      @Input() name;
      @Input() visible;
      @Output() loaded = new EventEmitter();
      constructor(
        private _dcl: DynamicComponentLoader, 
        private _eref: ElementRef) {
    
      // import OneCmp, TwoCmp in this file...
      private components: { one: OneCmp, two: TwoCmp }
    
      ngOnInit() {
        this._dcl.loadNextToLocation(
          this.components[this.name], 
          this._eref)
          // pass values to the loaded components
          // and send it's instance to the parent
          .then((ref: ComponentRef) => {
            ref.instance.visible = this.visible;
            this.loaded.emit(ref.instance)
          });
      }
    }
    

提交回复
热议问题