1

我正在尝试构建modals仅依赖于CDK. 模态是通过服务打开的,我通过entryComponent以模态渲染它。

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

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

const compRef = this.componentFactoryResolver.resolveComponentFactory<any>(this.modalContentComponent);
const componentRef = this.modalContainer.createComponent(compRef);

我有两个问题:

  1. 我必须componentRef.instance.ngOnInit();手动触发
  2. 我将一些数据传递给该组件:componentRef.instance.name = this.data.name;但组件从不呈现它
4

1 回答 1

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;
}

更新了 StackBlitz


这样做意味着ngDoCheck它将为您运行并检测更改,因为ngDoCheck它直接在ngOnInit.

于 2018-06-29T10:05:32.467 回答