6
import { SpinnerComponent, ExternalLibrary } from 'external.library'
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule, ExternalLibrary
  ],
  bootstrap: [AppComponent]
  , entryComponents: [SpinnerComponent]
})

以上是我将 entryComponent 指定给模块的代码。这个 SpinnerComponent 也来自一个外部模块,即 ExternalModule。

Webpack 报错:

SpinnerComponent 中的 ERROR 不能用作入口组件。

属于同一模块的组件是否需要出现在 entryComponents 属性列表中?

据我所知,官方定义在出现在 entryComponent 属性之前没有为组件指定这样的先决条件。

4

4 回答 4

1

我遇到了同样的问题。为我解决的问题是将组件添加到entryComponents我的外部库中的模块中。

在您的情况下,这意味着更新ExternalLibraryNgModule 以包含SpinnerComponent作为入口组件,而不是使用该库的应用程序。

@NgModule({
    ...
    entryComponents: [SpinnerComponent]
    ...
})
export class ExternalLibrary { }
于 2018-09-02T21:11:15.893 回答
0

在我的情况下,即使将其添加到entryComponents库模块中,错误仍然存​​在。原来是因为我的index.ts文件:在模块的文件夹中,我有一个index.ts文件正在重新导出模块及其组件。在里面public_api.ts我使用了 的导出index.ts,所以它看起来像这样:

...
export * from './lib/shell';

不知何故,Angular 不喜欢index.ts库中的文件,我得到了错误(语言服务也抛出错误,无法识别标签)。更改index.tspublic-api.ts修复它:

...
export * from './lib/shell/public-api';
于 2019-10-02T10:03:25.920 回答
0

您缺少声明中的动态组件

import { SpinnerComponent, ExternalLibrary } from 'external.library'
@NgModule({
  declarations: [
    AppComponent, SpinnerComponent
  ],
  imports: [
    BrowserModule, ExternalLibrary
  ],
  bootstrap: [AppComponent]
  , entryComponents: [SpinnerComponent]
})

希望能帮助到你

于 2020-01-08T18:55:41.447 回答
0

在我的情况下,问题是入口组件是在 Angular 库中声明的,但是,它在不同的花边加载模块中重新声明(再次作为入口组件),清理花边加载模块中的声明并只保留在图书馆,作品。

希望能帮助到你。

于 2020-06-05T09:10:14.913 回答