4

诸如ngIf, ngClass,之类的指令ngStyle在延迟加载的组件中不起作用(在 Angular 9 中引入)。

core.js:12626 Can't bind to 'xxx' since it isn't a known property of 'xxx'.

我设法让它工作的唯一绑定是:[style.color]="color". 延迟加载 webpack js 包只要没有绑定或者只是简单的绑定作为[style.color]="color".

延迟加载的组件没有在 NgModule 中声明,它是这样加载的

 async lazy1() {
    this.viewContainerRef.clear();
    const { LazyComponent } = await import("./lazy.component");
    this.viewContainerRef.createComponent(
      this.cfr.resolveComponentFactory(LazyComponent)
    );
  }

完整示例(由于某种原因无法在 stackblitz 中运行): https ://stackblitz.com/edit/angular-zyp3wm

这可以按照以下文章逐步复制 https://johnpapa.net/angular-9-lazy-loading-components/ 您只需要ngIf在其中一个惰性组件中添加一个即可获得我遇到的问题。

4

1 回答 1

0

渲染一个未在任何 NgModule 中声明的组件,或者确切地说,使用未在同一 NgModule 中声明或导入的其他元素是不可能的。

几个月前,我写了一篇关于 Angular Ivy 世界中独立组件的未来的博文——你可以在这里找到它。它可能会帮助您了解可选的 NgModule 视角,以及成本是多少(手动 CD、不同的注入器等...)

于 2020-04-14T06:38:38.427 回答