web-dev-qa-db-fra.com

Quelle est la différence entre StoreModule.forRoot () et StoreModule.forFeature ()

Récemment, ngrx store a changé la façon d’enregistrer les variables de magasin dans une application angular.

Quelle est la différence entre StoreModule.forRoot () et StoreModule.forFeature ()

Devons-nous enregistrer les deux pour que l'application fonctionne?

26
Shanmugam M

Il est utilisé avec des réducteurs chargés paresseux. Lorsque vous avez chargé (paresseux) des modules de fonctionnalités et que vous souhaitez enregistrer des réducteurs dans ce module, vous utilisez forFeature. Sinon, dans votre AppModule, vous utilisez forRoot.

ref: https://github.com/ngrx/platform/blob/master/docs/store/api.md#injecting-reducers

13
dee zg

Toujours importer pour les appels forRoot () Je pense que cela est probablement assez évident, mais, pour le compte rendu, vous devez vous assurer que vous avez déjà importé le magasin racine et le module d’effets dans votre application principale.

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

Si vous avez des réducteurs ou des effets applicables à ce niveau, vous devez les ajouter ici, mais même si vous n’avez pas de réducteurs ou d’effets au niveau racine de votre application, vous devez effectuer ces deux appels. Sinon, les appels forFeature () ne pourront pas accéder au magasin racine ni à l’emplacement des effets pour y ajouter les réducteurs et les effets de la fonctionnalité.

7
Shanmugam M