В чем разница между StoreModule.forRoot() и StoreModule.forFeature()

Недавно магазин ngrx изменил способ регистрации переменных хранилища в приложении angular.

В чем разница между StoreModule.forRoot() и StoreModule.forFeature()

Нужно ли регистрировать обе работы приложения?

Ответ 1

Его используют с ленивыми нагруженными редукторами. Если у вас есть (лениво загруженные) функциональные модули и вы хотите зарегистрировать редукторы в этом модуле, тогда вы используете forFeature. В противном случае в вашем AppModule вы используете forRoot.

ссылка: https://github.com/ngrx/platform/blob/master/docs/store/api.md#injecting-reducers

Ответ 2

Всегда импортировать вызовы forRoot(). Я думаю, что это, вероятно, довольно очевидно, но только для записи, вам нужно убедиться, что вы уже импортировали модуль корневого хранилища и эффектов в свое основное приложение.

imports: [
    StoreModule.forRoot({}),
    EffectsModule.forRoot([]),
    ...

Если у вас есть редукторы или эффекты, которые применяются на этом уровне, вы должны добавить их здесь, но даже если у вас нет никаких редукторов или эффектов на корневом уровне вашего приложения, вам необходимо выполнить эти два вызова. В противном случае вызовы forFeature() не смогут получить доступ к корневому хранилищу или местоположению эффекта, чтобы добавить редукторы и эффекты для функции.

Ответ 3

Что такое редукторы? Я не использую ngrx, насколько я знаю.