使用参数动态创建组件

时间:2018-05-19 20:21:46

标签: angular frontend angular6

我有一个使用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 :(得分:3)

是这样的:

 const factory = this.componentFactoryResolver.resolveComponentFactory(LoginComponent);
    const component: ComponentRef<LoginComponent> = this.viewContainerRef.createComponent(factory);
    component.instance.user = "prop 1";
    component.instance.input2 = "prop 2";

答案 1 :(得分:1)

是的,实现它的最简单方法是:

JSON Values: id=991, name=GPSname, address=GPSaddress, lat=52.948616, lng=-1.169131, type=GPStype

但请注意,此解决方案容易出错。如果param1随时间变化,你可以得到

  

EXCEPTION :表达式在检查后发生了变化。

这不容易调试。

您可能希望使用依赖注入解决方案,如in this tutorial所述。