Угловой эффект ngrx - PullRequest
       7

Угловой эффект ngrx

0 голосов
/ 03 января 2019

Я работаю с ngrx и пишу Эффект.Проблема в том, что я хочу использовать эффекты с EffectModule.forFeature, но он работает только для меня, когда я регистрирую его для Root.Я пытался зарегистрировать оба, но только когда я регистрирую forRoot в app.module, эффект работает.Нужно ли регистрировать его как в app.module, так и в моём компонентном модуле?

imports: [
  CommonModule,
  RouterModule,
  DataTableModule,
  ModalModule,
  SelectListModule,
  StoreModule.forFeature('estateOwners', EstateOwnerReducer),
  EffectsModule.forFeature([EstateOwnersEffects]),
]

1 Ответ

0 голосов
/ 04 января 2019

Вам также необходимо добавить модуль EffectsModule в модуль приложения.В соответствии с документами на https://ngrx.io/guide/effects на шаге 2 упоминается, что:

Зарегистрируйте модуль EffectsModule в корнях вашего приложения.Этот EffectsModule должен быть добавлен в корневой каталог NgModule для регистрации поставщиков эффектов и запуска их при загрузке приложения.

Если вы хотите иметь EffectsModule только для функцийи недоступен для root, тогда вы можете сделать:

app.module.ts

import { EffectsModule } from '@ngrx/effects';

@NgModule({
  imports: [EffectsModule.forRoot([])],
})
export class AppModule {}

и в вашем модуле вы можете иметь тот же код:

imports: [
  CommonModule,
  RouterModule,
  DataTableModule,
  ModalModule,
  SelectListModule,
  StoreModule.forFeature('estateOwners', EstateOwnerReducer),
  EffectsModule.forFeature([EstateOwnersEffects]),
]

В документах также есть примечание:

Примечание. Запуск класса эффектов несколько раз с помощью forRoot () или forFeature () (например, с помощью различных загруженных с отложенной загрузкой модулей) не будетзаставлять эффекты запускаться несколько раз.Не существует функциональной разницы между эффектами, загружаемыми forRoot () и forFeature ();важное различие между функциями состоит в том, что forRoot () устанавливает провайдеров, необходимых для эффектов.

...