Angular2更新动态创建的组件。

时间:2017-02-26 13:55:20

标签: angular

我正在解决如何动态创建API接收的组件的问题。为我工作的解决方案是

private addComponent(template: string) {
    @Component({template: template})
    class TemplateComponent {}

    @NgModule({declarations: [TemplateComponent], imports: [BlogAppModule]})
    class TemplateModule {}

    const mod = this.compiler.compileModuleAndAllComponentsSync(TemplateModule);
    const factory = mod.componentFactories.find((comp) =>
      comp.componentType === TemplateComponent
    );

    this.blogAppRef = this.container.createComponent(factory);
}

参考:Angular2 - Dynamic components in content received by API

现在,无论何时调用此函数,它都会创建一个新的ng-component,组件只会堆叠在另一个上面。现在,我使用此删除代码:

... 
    if (this.blogAppRef) {
        this.blogAppRef.destroy();
    }

    this.blogAppRef = this.container.createComponent(factory);
}

工作正常。但我的问题是,这可以做得更好吗? 这个解决方案有一些重要的缺点吗? (存储器/功率)

我无法找到如何更新此类动态创建的组件。它需要新编译的组件来替换前一个组件;更准确地说,替换ng-content的内部部分。

谢谢!

0 个答案:

没有答案