Angular 2 ngOnChanges не срабатывает при установке значения через ссылку на компонент

Я создаю компонент динамически следующим образом:

let componentFactory = this._componentFactoryResolver.resolveComponentFactory(this.component);
this.componentRef = this.viewContainerRef.createComponent(componentFactory);
this.componentRef.instance.text = this.text;

Как видите, я также присваиваю значение свойству text. Это работает, но он не запускает ngOnChanges в целевом компоненте и, следовательно, также не запускает обнаружение изменений (я использую стратегию "Push").

Я пытался вручную вызвать его с

this.componentRef.changeDetectorRef.detectChanges();

а также

this.componentRef.changeDetectorRef.markForCheck();

но без успеха.

Есть идеи, как лучше назначить новое текстовое значение целевым компонентам @Input ('text')? Текст - это просто строковое значение.

ОБНОВЛЕНИЕ: теперь я строю обходной путь с установщиком в целевом компоненте:

@Input('text')
set text(text: string) {
    this._text = text;
    this.cdRef.markForCheck();
}

Это работает, но это немного глупо, я все же предпочел бы более "угловой" способ.

0 ответов

Другие вопросы по тегам