Angular 2将新数据提供给已经实例化的动态加载组件

时间:2016-04-05 14:51:00

标签: typescript angular

我正在使用动态组件加载器,如果在组件初始化时启动所有数据,则一切正常。我正在使用此代码:

this.dcl.loadAsRoot(SomeComponent, "#somediv", this.injector).then((cmp)=>{

     // @Input()
     cmp.instance.someinput = this.someinput;

     // @Output()
     cmp.instance.someoutput.subscribe(res => { this.consoleLog(res) })

     // Trigger change detection
     cmp.location.internalElement.parentView.changeDetector.ref.detectChanges();

    // return data
    return cmp

})

我现在想要为" someinput"提供新的价值。变量,这是可能的还是我需要重新初始化整个组件?!

1 个答案:

答案 0 :(得分:1)

只需保留对组件的引用

compRef:ComponentRef;

someFunc() {
  this.dcl.loadAsRoot(SomeComponent, "#somediv", this.injector).then((cmp)=>{
    this.compRef = cmp;
    ...
  }
}

someOtherFunc() {
  this.compRef.someInput = 'someotherValue';
  this.compRef.location.internalElement.parentView.changeDetector
      .ref.detectChange‌​s();
}