不是已知元素(迁移到Angular 9之后)

时间:2020-02-18 08:32:39

标签: angular components angular9

在迁移到Angular 9(之前是Angular 8)之后,我遇到了一些使用自己的组件的问题。 我的组件select-popup-data-reference具有模块(声明和导出),该模块在docName模块中导入。但是我得到了错误。 (我尝试添加CUSTOM_ELEMENTS_SCHEMA,但这没有帮助。)

我在其他模块中使用了此组件,并且一切正常。

ERROR in src/app/components/feature/document/docName.html:211:1 - error NG8001: 'choose-popup-data- 
reference' is not a known element:
1. If 'choose-popup-data-reference' is an Angular component, then verify that it is part of this module.
2. If 'choose-popup-data-reference' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.

211 <choose-popup-data-reference
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
212     [referenceType]="'some_type'"
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
213     #docComplModal
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
214     (setChooseData)="fillDocAction($event)">
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

组件模块-select-popup-data-reference

@NgModule({
    imports: [CommonModule, TranslateModule, FormsModule],
    exports: [ChoosePopupDataReferenceComponent],
    declarations: [ChoosePopupDataReferenceComponent],
    schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class ChoosePopupDataReferenceModule {
} 

在导入后,导入块docNameModule

...
imports: [
   ...
   ChoosePopupDataReferenceModule 
   ...
]
...

3 个答案:

答案 0 :(得分:2)

ERROR in src/app/<your-template>.html:64:5 - error NG8001: 'your-component' is not a known element:

检查在其中声明了父组件的模块,因为在我的情况下,是在Angular项目的共享模块中声明了父组件。原来,我的子组件需要与父组件一起在共享模块中声明才能完成此工作。我将组件从Angular CLI放入的模块声明中取出,然后放入共享模块的声明中,并且可以正常工作。

关键是:我使用Angular CLI生成了组件,但是CLI将该组件添加到了错误的模块声明中,但是Angular CLI这样做并不是完全错误,因为它实际上是Angular CLI的逻辑文件目录。组件和该组件的逻辑模块。

在我的情况下,父组件被用作路由组件。事实证明,我的父组件需要它自己的NgModule,但我不确定。

答案 1 :(得分:1)

我的docNameModule尚未在任何地方使用。 (未使用旧页面,但未删除)。 将模块导入到SubModule(惰性)后,错误消失了。

答案 2 :(得分:-2)

您还必须在架构中添加 NO_ERRORS_SCHEMA 以及CUSTOM_ELEMENTS_SCHEMA。之后,停止并运行命令ng serve或npm start。肯定会工作。