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 angulaire.

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

devons-nous enregistrer les deux pour que la demande fonctionne?

18
demandé sur Pankaj Parkar 2017-09-21 18:58:01

2 réponses

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

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

8
répondu dee zg 2017-09-21 16:04:45

j'ai trouvé la réponse dans le blog suivant

https://blog.dmbcllc.com/ngrx-4-lazy-loading/

toujours importer des appels forRoot() Je pense que c'est probablement assez évident, mais juste pour l'enregistrement, vous devrez vous assurer que vous avez déjà importé le magasin racine et les effets de module dans l'application principale.

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

Si vous avez des réducteurs ou les effets qui s'appliquent à ce niveau, vous devez les ajouter ici, mais même si vous ne pas avoir de réducteurs ou d'effets au niveau de la racine de votre application, vous devez faire ces deux appels. Sinon, les appels de perte() ne pourront pas accéder à la mémoire Racine ou à l'emplacement de l'effet pour ajouter les réducteurs et les effets pour la fonctionnalité.

6
répondu Shanmugam M 2017-09-25 22:02:28