构建cdk模态-不会触发ngOnInit并且未传递任何数据

时间:2018-06-29 08:09:24

标签: angular angular-cdk

我正在尝试构建仅依赖于modals的{​​{1}}库。 模态随服务一起打开,我通过CDK使其以模态呈现。

以下是示例:https://stackblitz.com/edit/angular-ofzpks?file=src%2Fapp%2Fmodal.component.ts

在模式本身中,我正在使用工厂创建组件:

entryComponent

我有两个问题:

  1. 我必须手动触发const compRef = this.componentFactoryResolver.resolveComponentFactory<any>(this.modalContentComponent); const componentRef = this.modalContainer.createComponent(compRef);
  2. 我将一些数据传递给该组件:componentRef.instance.ngOnInit();,但是组件从不呈现它

1 个答案:

答案 0 :(得分:1)

在您的modal.component.ts中,使用ngOnInit代替ngAfterViewInit

ngOnInit() {
  const compRef = this.componentFactoryResolver.resolveComponentFactory<any>(this.modalContentComponent);
  const componentRef = this.modalContainer.createComponent(compRef);
  componentRef.instance.name = this.data.name;
}

Updated StackBlitz


以这种方式进行操作意味着ngDoCheck将运行并为您检测更改,因为ngDoCheck直接在ngOnInit之后运行。