web-dev-qa-db-ja.com

StoreModule.forRoot()とStoreModule.forFeature()の違いは何ですか

最近、ngrxストアは、ストア変数をangularアプリケーションに登録する方法を変更しました。

StoreModule.forRoot()とStoreModule.forFeature()の違いは何ですか

アプリケーションを機能させるには、両方を登録する必要がありますか?

26
Shanmugam M

遅延読み込みのレデューサーで使用されます。 (遅延ロードされた)フィーチャモジュールがあり、そのモジュール内にレデューサーを登録する場合は、forFeatureを使用します。それ以外の場合は、AppModuleforRootを使用します。

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

13
dee zg

常にforRoot()呼び出しをインポートするこれはおそらくかなり明白だと思いますが、記録のために、メインアプリケーションにルートストアとエフェクトモジュールが既にインポートされていることを確認する必要があります。

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

このレベルで適用されるレデューサーまたはエフェクトがある場合は、ここに追加する必要がありますが、アプリケーションのルートレベルにレデューサーまたはエフェクトがない場合でも、これら2つの呼び出しを行う必要があります。そうしないと、forFeature()呼び出しはルートストアまたはエフェクトの場所にアクセスして、機能のレデューサーとエフェクトを追加できません。

7
Shanmugam M