Почему мы не добавляем ngModule в массив декораторов app.module.ts

Я делаю угловой проект и сделал необходимые компоненты и импортированные модули тоже. Главная проблема, которую я вижу здесь... заключается в том, что мы делаем 2 шага:

  1. Добавьте компонент, сервисы, каналы, модули вверху, добавив соответствующие файлы или папки
  2. Добавьте их в декоратор (компоненты, каналы, модели идут в декларации), (модули для импорта) и (услуги для поставщиков).

Есть исключение. Теперь я ожидал, что так же, как 'browser-module' (предварительно извлеченный) или 'forms-module' (добавленный вручную) - в шаге 2 (т.е. массив декоратора) должно быть добавление или добавление имени для "нг-модуль". Почему его там нет? Это единственное исключение или есть и другое? Не должен ли 'ngModule' быть добавлен в декоратор?

Примечание: код не требуется, так как приложение работает нормально. Вопрос прост: если мы используем определенное правило для всех - Компоненты, Сервисы, Модули, Трубы, Модели и Интерфейс - почему бы не использовать ngModule?

3 ответа

Требуется потому что вы используете @NgModule декоратор при определении вашего модуля. Это просто декоратор, а не модуль. Вам нужно импортировать его скрипт, потому что вы просто используете его. Вы можете думать об этом как @Input или же @Output декораторы. Вы импортируете их в свои компоненты, чтобы использовать их внутри компонента.

Вы можете посмотреть на кодNgModule

Это интерфейс

export interface NgModule { ...

Тем не мение, BrowserModule это модуль, который украшает себя @NgModule

Проверьте код

@NgModule({providers: BROWSER_MODULE_PROVIDERS, exports: [CommonModule, ApplicationModule]})
export class BrowserModule { ...

AOT Complier содержит 2 этапа.

  1. Этап анализа кода 2) Этап генерации кода

На этапе анализа кода с помощью @ngModule декоратор классов AOT Compiler получит метаданные о модуле. Используя эти детали, он создаст metadata.json для компиляции.

На этапе генерации кода будут созданы фабрики модулей.

NgModule - это класс, помеченный декоратором @NgModule. Это не отдельный модуль, который настроен в вашем приложении.

Другие вопросы по тегам