最近、ngrxストアは、ストア変数をangularアプリケーションに登録する方法を変更しました。
StoreModule.forRoot()とStoreModule.forFeature()の違いは何ですか
アプリケーションを機能させるには、両方を登録する必要がありますか?
遅延読み込みのレデューサーで使用されます。 (遅延ロードされた)フィーチャモジュールがあり、そのモジュール内にレデューサーを登録する場合は、forFeature
を使用します。それ以外の場合は、AppModule
でforRoot
を使用します。
参照: https://github.com/ngrx/platform/blob/master/docs/store/api.md#injecting-reducers
常にforRoot()呼び出しをインポートするこれはおそらくかなり明白だと思いますが、記録のために、メインアプリケーションにルートストアとエフェクトモジュールが既にインポートされていることを確認する必要があります。
imports: [
StoreModule.forRoot({}),
EffectsModule.forRoot([]),
...
このレベルで適用されるレデューサーまたはエフェクトがある場合は、ここに追加する必要がありますが、アプリケーションのルートレベルにレデューサーまたはエフェクトがない場合でも、これら2つの呼び出しを行う必要があります。そうしないと、forFeature()呼び出しはルートストアまたはエフェクトの場所にアクセスして、機能のレデューサーとエフェクトを追加できません。