import { SpinnerComponent, ExternalLibrary } from 'external.library'
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule, ExternalLibrary
],
bootstrap: [AppComponent]
, entryComponents: [SpinnerComponent]
})
上面是我的代码,用于指定模块的entryComponent。 此SpinnerComponent也来自外部模块,即ExternalModule。
Webpack给出错误:
SpinnerComponent中的错误不能用作条目组件。
属于同一模块是否要求组件出现在entryComponents属性列表中?
根据官方定义,在出现在entryComponent属性中之前,没有为组件指定此类先决条件。
答案 0 :(得分:1)
我遇到了同样的问题。对我来说,解决此问题的方法是将组件添加到外部库中模块的entryComponents
中。
在您的情况下,这意味着更新ExternalLibrary
NgModule,使其包含SpinnerComponent
作为输入组件,而不是使用库的应用程序。
@NgModule({
...
entryComponents: [SpinnerComponent]
...
})
export class ExternalLibrary { }
答案 1 :(得分:0)
就我而言,即使将错误添加到库模块内的entryComponents
后,错误仍然存在。原来是由于我的index.ts
文件所致:在模块文件夹中,我有一个index.ts
文件,该文件正在重新导出模块及其组件。在public_api.ts
内部,我使用了index.ts
的导出,因此看起来像这样:
...
export * from './lib/shell';
以某种方式Angular不喜欢库中的index.ts
文件,但我得到了错误(语言服务也抛出错误,无法识别标签)。将index.ts
更改为public-api.ts
可以解决此问题:
...
export * from './lib/shell/public-api';
答案 2 :(得分:0)
您在声明中缺少动态组件
import { SpinnerComponent, ExternalLibrary } from 'external.library'
@NgModule({
declarations: [
AppComponent, SpinnerComponent
],
imports: [
BrowserModule, ExternalLibrary
],
bootstrap: [AppComponent]
, entryComponents: [SpinnerComponent]
})
希望有帮助
答案 3 :(得分:0)
在我的情况下,问题是入口组件在Angular库中声明,但是在不同的花边加载模块中再次声明(再次作为入口组件),清理了花边加载模块中的声明,仅保留了库中的声明有效。
希望有帮助。