Создать компонент динамически с параметрами - PullRequest
0 голосов
/ 19 мая 2018

У меня есть компонент, который динамически создается с помощью ComponentFactoryResolver

this.container.clear();
let factory  = this.resolver.resolveComponentFactory(DynamicComponent);
this.componentRef = this.container.createComponent(factory);

template: '...<child-component [param1]="param1"></child-component>...';

Проблема в том, что шаблон DynamicComponent имеет дочерний компонент и привязки ввода.Есть ли способ передать параметры дочернему компоненту при его динамическом создании?

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Да, вот так:

 const factory = this.componentFactoryResolver.resolveComponentFactory(LoginComponent);
    const component: ComponentRef<LoginComponent> = this.viewContainerRef.createComponent(factory);
    component.instance.user = "prop 1";
    component.instance.input2 = "prop 2";
0 голосов
/ 19 мая 2018

Да, самый простой способ добиться этого:

this.componentRef.instance.param1 = param1;

Но обратите внимание, это решение подвержено ошибкам.Если param1 изменяется со временем, вы можете получить

EXCEPTION : Выражение изменилось после того, как было проверено.

, которое не легко отладить.

Возможно, вы захотите использовать решение для внедрения зависимостей, как объяснено в этом руководстве .

...