将ngrx集成到我的代码中

时间:2017-02-06 09:22:52

标签: ngrx

我正在尝试如何将ngrx添加到我当前的项目结构中。

我有关于ngrx /回流的所有概念。尽管如此,我还是没有弄清楚如何重建项目结构以便将其集成到我的项目中。

  1. 我需要在哪里添加减速机?
  2. 我需要在哪里添加状态?
  3. 行动怎么样?
  4. 在服务中Store应该注入每个组件?
  5. 何时何地应从服务器获取数据?
  6. 那边有没有项目结构的最佳实践?

1 个答案:

答案 0 :(得分:1)

首先,您应该查看@ngrx/store文档:https://github.com/ngrx/store#setup

我做了一个小的(有趣的)项目来演示如何使用:
- angular
- ngrx/store
- ngrx/effects
- normalized state
- selectors

您可以在此处找到它:https://github.com/maxime1992/pizza-sync

<小时/> 为您提供有关其工作原理的一些信息:
  - core.module.ts是我宣布我的根减速器
  - root.reducer.ts是我根据dev / prod env构建根减速器和compose it with middlewares - 对于减速器,我保留每个related part together(界面+减速器+效果+选择器)

然后在组件中访问商店,只需执行that
注入商店:

constructor(private _store$: Store<IStore>) { }

获取数据 a)选择器(ex)

this._pizzasCategories$ = this._store$.let(getCategoriesAndPizzas());

b)直接从商店(前)

this._idCurrentUser$ = this
      ._store$
      .select(state => state.users.idCurrentUser);

请注意,我没有subscribe这意味着我在我的视图中使用了async管道,所以角度为我订阅了Observable。

但当然你也可以手工完成并在你的ts中使用subscribe。

PS: 我将发布所有已经设置好的启动器,以避免在启动新项目时浪费时间。我本周会尝试发布它,我会在完成后立即更新此帖子。也许它可能对你有帮助。

编辑12/05/17
迟到但我终于发布了首发:)! https://github.com/maxime1992/angular-ngrx-starter