Неизвестный элемент (после перехода на Angular 9)

После перехода на 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 
   ...
]
...

person Serj Malko    schedule 18.02.2020    source источник
comment
Как вы импортировали этот компонент в модуль?   -  person Tony Ngo    schedule 18.02.2020
comment
Не могли бы вы разместить объявление компонента и раздел импорта в модуле. (Это компонент или директива?)   -  person Akhil Naidu    schedule 18.02.2020
comment
Отредактируйте пост, добавьте блокировку iport   -  person Serj Malko    schedule 18.02.2020


Ответы (3)


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 не был полностью неправильным в этом, поскольку на самом деле это был каталог логических файлов для компонента и логический модуль для компонента.

В моем случае родительский компонент использовался как компонент маршрутизации. Может оказаться, что моему родительскому компоненту нужен собственный NgModule, но я еще не уверен.

person Robert Rendell    schedule 04.06.2020
comment
Спасибо. Я искал это большую часть часа. Родитель не был указан в app.module.ts. - person Chris Phillips; 18.11.2020

Мой docNameModule нигде не использовался. (Старая страница не используется, но не удаляется). После импорта модуля в SubModule (ленивый) ошибка исчезла.

person Serj Malko    schedule 18.02.2020
comment
Это решило это и для меня, пришлось импортировать модуль компонента в модуль с ленивой загрузкой. - person Richard; 03.09.2020

Вы также должны добавить NO_ERRORS_SCHEMA вместе с CUSTOM_ELEMENTS_SCHEMA в схемы. После этого остановитесь и выполните команду ng serve или npm start. Это обязательно будет работать.

person Anthoni Lawrance Arokiyasamy    schedule 26.07.2020
comment
Не совсем исправление, но взлом - person Richard; 03.09.2020