2016-10-07 2 views
12

Я только начинаю изучать Угловые. Я встретил несколько примеров, используя ngModule декораторов над пустым class.Какой код мы пишем внутри класса, объявленного в декодере ngModule?

Что я хочу знать ... Является ли class, указанным непосредственно под декоратором ngModule, используемым только для инициализации модуля или же он служит для любой другой цели?

ответ

2

вам необходимо объявление класса для эффективного export. Модуля инициализируется с импортом, но у вас есть доступ к функциям от экспорта класса (на самом деле, что вы импорт?)

Надеется, что это помогло

EDIT -

«Тело класс является пустым, но этот декоратор над классом (@NgModule) дает этому классу его функциональность. Так что действительно, этот класс не пуст. Он просто не требует дополнительной логики после того, как к нему применяется декоратор. bootstrapModule принимает класс в качестве входных данных и предполагает, что этот класс украшен @NgModule, настроенным так же, как у вас (объявления, импорт, поставщики и т. д.) ». от: Why Angular export empty class in app.modules.ts?

+0

Я не понял, это вообще – CodyBugstein

2

Этот класс используется только как ссылка, которую вы можете импортировать из машинописи. Декоратор не может быть помещен без участия класса или члена.

После компиляции он будет содержать аннотацию, которую вы использовали для украшения этого класса. Они будут использоваться угловыми для настройки инжектора, особенно для того класса, который он должен создать, когда компоненту необходимо ввести данный тип элемента.

Теперь вы можете поместить что-то в конструктор, например, если вы хотите что-то сделать в то время, когда модуль (и связанные компоненты/поставщики) вот-вот будет введен. Это единственное, о чем я могу думать сейчас.

Я просто использовал его для регистрации локали, когда приложение запускается.

export class AppModule { 
    constructor() { 
     registerLocaleData(localeDeCH); 
    } 
} 

Идея пришла из here, где они не определяют, куда звонить registerLocaleData

2

Посмотрите на официальную документацию для угловых NgModules. https://angular.io/guide/ngmodules

Следующие от:

@NgModule принимает объект метаданных, который описывает, как компилировать шаблоны отображения компонента и как создать инжектор во время выполнения

NgModule метаданных выполняет следующие функции:

  1. Объявляет, какие компоненты, директивы и трубы принадлежат модулю.
  2. Публикует некоторые из этих компонентов, директив и протоколов, чтобы их могли использовать шаблоны компонентов другого модуля.
  3. Импортирует другие модули с компонентами, директивами и трубами, которые нужны компонентам в текущем модуле. Предоставляет
  4. сервисы других компонентов приложения.
2

Вы можете, например, использовать конструктор или реализовать ngDoBootstrap для выполнения кода, когда ленивый загружен модуль был загружен в первый раз (инициализирован)

Вы также можете вводить услуги конструктора, так что они инстанцируются по DI, когда инициализируется приложение или ленивый загруженный модуль.

Я не могу вспомнить другие примеры. Кроме того, он несет только декоратор @NgModule() и предоставленную там информацию. (Там могут быть некоторые дополнительный код генерируется, когда приложение построено)

Смотри также ngDoBootstrap комментарий в https://angular.io/guide/entry-components

+1

@yurzui Спасибо. Я знал, что есть что-то еще. Думаю, я видел это в одном из ваших замечательных ответов несколько месяцев назад. –

+0

Есть ли у вас примеры кода, с которым вы можете поделиться? – CodyBugstein

+0

Просто добавьте конструктор или 'ngDoBootstrap' и добавьте код по вашему выбору для выполнения. Я видел некоторые вопросы, на которых это было задано, но я не знаю, как это сделать. –

Смежные вопросы