#angular #typescript
#angular #машинописный текст #typescript
Вопрос:
У меня есть один вопрос об Angular 2. Я работал с ним до RC4. Теперь я увидел, что добавлены основные понятия (NgModule). Я пытаюсь работать с этим, но я не понимаю, почему мы иногда используем модуль, а иногда только компонент.
Например. Почему мы используем компоненты вместо модуля? Почему мы не создали оболочку NgModule для Crisis Center и не перешли к ней? Я не понимаю.
Из официального документа я понимаю, что каждый логический модуль должен быть другим модулем, который можно создать с помощью NgModule. Хорошо, нет проблем.
Но после этого я вижу, что мы просто используем чистые компоненты. Я не понимаю, когда я должен использовать концепцию модуля, а когда компонент. Я не могу использовать module для маршрутизации?
Но если у меня есть много сервисов / дочерних компонентов / каналов и т. Д. В каком-то компоненте, который я хочу отобразить по некоторому пути, так что в этом случае я должен создавать стандартные декораторы поставщиков / директив, как в старом добром RC4?
Спасибо.
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';
import { CrisisService } from './crisis.service';
import { CrisisDetailResolve } from './crisis-detail-resolve.service';
import { CrisisCenterComponent } from './crisis-center.component';
import { CrisisListComponent } from './crisis-list.component';
import { CrisisCenterHomeComponent } from './crisis-center-home.component';
import { CrisisDetailComponent } from './crisis-detail.component';
import { crisisCenterRouting } from './crisis-center.routing';
@NgModule({
imports: [
CommonModule,
FormsModule,
crisisCenterRouting
],
declarations: [
CrisisCenterComponent,
CrisisListComponent,
CrisisCenterHomeComponent,
CrisisDetailComponent
],
providers: [
CrisisService,
CrisisDetailResolve
]
})
export class CrisisCenterModule {}
Ответ №1:
NgModule
был введен для поддержки отложенной загрузки в сочетании с маршрутизатором. Поэтому, если вы хотите отложить загрузку части вашего приложения только тогда, когда на самом деле выполняется навигация по соответствующему маршруту, тогда эта часть вашего приложения должна перейти в свою собственную NgModule
.
Кроме того, это NgModule
можно использовать для группировки компонентов, директив, каналов и служб в соответствии с вашими предпочтениями. Общим является создание NgModule
компонентов, директив, каналов и служб, которые объединяют «функцию», которую вы, возможно, захотите повторно использовать в разных местах.
Вы также можете поместить все, что не загружено лениво, в один NgModule
, если хотите, но это не рекомендуется.
Комментарии:
1. Спасибо, Гюнтер. Я не видел этой информации в документации. Или я что-то пропустил?
2. Вы проверяли angular.io/docs/ts/latest/cookbook/ngmodule-faq.html и angular.io/docs/ts/latest/guide/ngmodule.html ? (какое-то время я проверял это сам, поэтому не уверен, что именно в нем содержится).
3. да, я прочитал руководство о NgModule, но не FAQ. Спасибо, я проверю это.
4. Итак, в FAQ я увидел, что я не могу объявлять сторонние модули. Так должен ли я использовать старые директивы в чистом компоненте, когда я хочу использовать какое-то стороннее всплывающее окно (например)? например, * @Component({…, директивы: [customPopupDirective]})*
5. Большое спасибо, Гюнтер.