我在 Angular v6 中使用compileModuleAndAllComponentsAsync 的 Angular 编译器创建动态组件,下面的代码相同。
viewChangeMethod(view: string) {
let template = `<span>${view} </span>`;
const tmpCmp = Component({ template: template })(class { });
this._compiler.clearCacheFor(this.tmpModule)
this.tmpModule = NgModule({ declarations: [tmpCmp,FRAComponent],import:[ComonModule] })(class {
});
this._compiler.compileModuleAndAllComponentsAsync(this.tmpModule)
.then((factories) => {
const f = factories.componentFactories[0];
const cmpRef = f.create(this._injector, [], null, this._m);
this._container.detach()
console.log(cmpRef.hostView)
this._container.insert(cmpRef.hostView);
})
this._compiler.clearCacheFor(this.tmpModule)
}
一切正常,但是在导入任何共享模块或自定义模块时出现错误。