Как наследовать модуль от другого модуля в Angular2?
поэтому я использую Angular 2 final (2.0.0) и, скажем, создаю WidgetsModule с кучей директив и компонентов, которые помогут мне построить мое приложение, а затем импортировать его в мой AppModule
import { NgModule } from '@angular/core';
import { UniversalModule } from 'angular2-universal';
import { WidgetsModule } from '../../../widgets';
import { App, appRouting } from './';
@NgModule({
imports: [
UniversalModule,
WidgetsModule,
appRouting
],
providers: [ AppPresenter ],
declarations: [ App ],
exports: [ ],
bootstrap: [ App ]
})
export class AppModule { }
затем я хочу использовать виджеты в дочерних модулях, таких как HomeModule, CartModule и т. д. Как сделать виджеты доступными без необходимости импортировать WidgetsModule в любой другой модуль?
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'
import { WidgetsModule } from '../../../widgets';
import { Cart, cartRouting } from './';
@NgModule({
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
WidgetsModule, //<-- I want to avoid doing this in every module
cartRouting
],
providers: [ ],
declarations: [ Cart ]
})
export class CartModule { }
есть ли способ сделать это, как это делается с директивы в экспорте[]?
3 ответов
он непосредственно нуждается в доступе к своим собственным WidgetsModule
так же, как ему нужен прямой доступ к его собственному FormsModule
(так или иначе). Один из способов очистить его, Хотя это экспорт все модули, которые используются в нескольких местах, из SharedModule
. Тогда вы можете просто импортировать SharedModule
везде
@NgModule({
exports: [
FormsModule,
CommonModule,
WidgetsModule
]
})
class SharedModule {}
не нужно imports
их в SharedModule
Если сказать, что вы объявляете компонент в SharedModule
который использует любой из этих других модули.
тогда во всех ваших других модулях, просто imports
на SharedModule
. Это заканчивается очисткой его много, и вам нужно только поддерживать один общий модуль.
Читайте Также:
модули не наследуют доступ к компонентам, директивам или каналам, объявленным в других модулях. Какой модуль импорта не имеет отношения к ContactModule и наоборот. Прежде чем ContactComponent может связываться с [(ngModel)], его ContactModule должен импортировать FormsModule.
Я думаю, что это на самом деле не нужно, потому что WidgetsModule это то же самое, что FormsModule (@angular / forms). WidgetsModule-это пользовательский модуль и FormsModule, предоставляемые angular. Это единственная разница. Оба модуля используются для выполнения некоторых функций.
Так что просто подумай о как мы можем объявить FormsModule один раз и использовать его в другие модули, если вы поняли, что проблема разрешенный.
просто вист следующую ссылку один одиночный NgModule против кратных одни с угловым 2