Ngrx示例应用程序:状态是如何连接在一起的

时间:2018-05-30 12:07:22

标签: ngrx ngrx-store

尝试改进我的应用状态管理,我看了一下ngrx演示应用。

example-app/app/core/containers/app.component.ts中,组件包含两个在构造函数中初始化的observable。可观察量用

初始化
constructor(private store: Store<fromRoot.State>) {
    /**
     * Selectors can be applied with the `select` operator which passes the state
     * tree to the provided selector
     */
    this.showSidenav$ = this.store.pipe(select(fromRoot.getShowSidenav));
    this.loggedIn$ = this.store.pipe(select(fromAuth.getLoggedIn));
}

我不明白的是,如何在那里使用fromAuth.getLoggedIn。注入的商店是从Root.State键入的。 root-reducer example-app/app/reducers/index.ts与auth-state没有任何关联。身份验证状态example-app/app/auth/reducers/index.ts确实扩展了根状态,所以我理解这些调用auth-state工作,但我不知道它是如何工作的。

1 个答案:

答案 0 :(得分:1)

该示例使用一个商店,因此所有功能减少器将其状态存储在根(共享)状态旁边,简单地说,所有减少器和状态都连接到一个单独的源,即商店。

在功能模块文件中查看此行:https://github.com/ngrx/platform/blob/master/example-app/app/auth/auth.module.ts#L36您可以看到它将功能模块reducer导入名称为/v2/logout的商店,因此auth会选择一个切片fromAuth.getLoggedIn州。