Построение модема cdk - ngOnInit не запускается и данные не передаются - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь собрать 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;, но компонент никогда не отображает их

1 Ответ

0 голосов
/ 29 июня 2018

В вашем 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.

...