Почему заполненный во время выполнения массив не работает с объявлениями NgModule? - PullRequest
0 голосов
/ 10 марта 2020

enter image description here

Пока работает фиксированный массив?

enter image description here

Я хотел бы использовать это экстрактор компонентов из маршрутов:

function* getRoutesComponents(routes: Routes) {
    for (const route of routes) {
        if (route.component) {
            yield route.component;

            if (route.children) {
                yield* getRoutesComponents(route.children);
            }
        }
    }
}



@NgModule({
    imports: [SharedModule, RouterModule.forChild(ROUTES)],
    declarations: getRoutesComponents(ROUTES)
})
export class ProductModule {}    

Так что я могу избежать пропуска объявления компонента в свойстве объявлений. Отсутствие компонента в объявлениях приведет к ошибке: NG8002: Невозможно привязать к 'ngModel', поскольку это не известное свойство 'input'

1 Ответ

0 голосов
/ 11 марта 2020

Чтобы включить заполнение компонентов времени выполнения для объявлений, нам нужно отключить Angular AOT. Это можно сделать, установив для ng serve или ng build --aot значение false.

enter image description here

Однако отключение AOT приведет к двум основные неудобства. Во-первых, мы больше не можем использовать константы в качестве ключей для объектов. Во-вторых, когда AOT отключен, несмотря на то, что для fullTemplateTypeCheck установлено значение true, Angular все равно будет создавать проект, даже если имена, связанные с ngModel, содержат опечатки или орфографические ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...