Во-первых, вы должны смотреть в @ngrx/store
документации: https://github.com/ngrx/store#setup
Я сделал небольшой (смешной) проект, чтобы продемонстрировать, как использовать:
- angular
- ngrx/store
- ngrx/effects
- normalized state
- selectors
Yo и можно найти здесь: https://github.com/maxime1992/pizza-sync
Чтобы дать вам некоторую информацию о том, как это работает:
-
core.module.ts это был я объявляю свой корень редуктор
-
root.reducer.ts это был я построить корневой редуктор и
compose it with middlewares согласно разработчика/прод окр
- для редуктора, я держу все
related part together (интерфейс (ы) + редуктор + эффекты + селекторы)
Тогда в качестве компонента, чтобы получить доступ к магазин просто сделать как that:
Инжектируйте магазин:
constructor(private _store$: Store<IStore>) { }
Получить данные либо
а) селектор (например)
this._pizzasCategories$ = this._store$.let(getCategoriesAndPizzas());
б) непосредственно из магазин (ex)
this._idCurrentUser$ = this
._store$
.select(state => state.users.idCurrentUser);
Обратите внимание, что я не subscribe
, который означает, что я использую в моем зрении async
трубы так Угловой подписаться на Наблюдаемый для меня.
Но, конечно, вы также можете сделать это вручную и использовать подписку в своих тс.
PS: Я буду выпускать стартер со всем, что уже установка, чтобы избежать потери времени со всеми, что при запуске нового проекта. Я попытаюсь выпустить его на этой неделе, и я обновлю это сообщение, как только это будет сделано. Может быть, это может вам помочь.
EDIT 12/05/17
Поздно, но я наконец-то выпустила стартер :)!
https://github.com/maxime1992/angular-ngrx-starter
Спасибо! Тем не менее, я не совсем понимаю, почему вы создаете «SharedModule» и «CoreModule» ...? – Jordi
Мне нравится держать «AppModule» максимально чистым. Чистым я имею в виду не писать в нем, так что безболезненно обновляться с помощью cli. Вы можете перенести этот «CoreModule» в «AppModule», если это более понятно вам и сохранить только «AppModule» + «SharedModule». – Maxime
Хорошо, мой комментарий не просил вас об этом, мне кажется, все в порядке. Я имел в виду, какое содержимое (импорт, провайдеры ...) вы назначаете «CoreModule», а другие - в «SharedModule». Я не знаю, объяснил ли я так хорошо ... – Jordi