Чтобы использовать канал в двух разных NgModule
, вам нужно создать общий модуль .
Вы можете объединить часто используемые директивы, каналы и компоненты в один модуль, а затем импортировать только тот модуль, где он вам нужен, в других частях вашего приложения.
@NgModule({
imports: [ CommonModule ],
declarations: [ CapitalizePipe ],
exports: [ CapitalizePipe ]
})
export class SharedModule {}
Чтобы уточнить наше обсуждение. Как только вы импортируете два отдельных общих модуля в другой модуль (скажем, AppModule), это не означает, что все, что вы объявили в одном из этих подмодулей, доступно в другом модуле. Вам нужно строго импортировать в модуль то, что вы хотите.
Великолепная покраска
Если эти двум подмодулям нужно что-то из массива declarations
, вы должны создать другой модуль, объявить его в этом другом модуле, добавить его в экспорт этого другого модуля и импортировать этот модуль как в подмодул # 1, так и в подмодул # 2:
Имея это в виду, вы можете принять следующее (все из деклараций @NgModule
):
Все, что находится в массиве exports
субмодуля № 3, будет доступно для использования в шаблонах субмодуля № 1, субмодуля № 2 и Appmodule. Вы можете добавить все, что у вас есть в объявлениях подмодуля № 3, в массив экспорта, но лучше всего поместить туда то, что вы хотите, доступное для внешнего мира.
Вы также можете добавить другие NgModules
в массив экспорта, не добавляя их в массив импорта, если они не требуются в этом конкретном c модуле, но вы хотите, чтобы он был доступны в других модулях, которые импортируют указанный модуль.
Все в массиве экспорта подмодуля # 1 будет доступно только для использования в шаблонах, объявленных в AppModule
(опять же, а также в подмодуле # 1).
Все в массиве экспорта подмодуля # 2 будет доступно только для использования в шаблонах, объявленных в AppModule
(опять же, а также в подмодуле # 2).
AppModule не должен иметь ничего в своем массиве экспорта .. но он может использовать все вещи, экспортированные из других модулей, и компоненты / директивы / трубы заявленные сами собой