我正在学习NgRx,但我不明白为什么实体选择器触发动作。我一直在寻找原因,但我还没有发现任何东西。 也许我缺少NgRx / Entity的一些基础知识。
这是我的演示代码:
selectors.ts
export const selectHeroState: MemoizedSelector<object, HeroesState> = createFeatureSelector<HeroesState>('heros');
export const selectHeroes: (state: object) => Hero[] = heroAdapter.getSelectors(selectHeroState).selectAll;
component.ts
ngOnInit() {
//this.store$.dispatch(new GetAll()); I thought this line of code was nescessary to fetch all data from store...
this.heroes$ = this.store$.select(selectHeroes); //but i just need this one as it triggers the Get All action
}
我希望已经很好地解释了我的问题。预先感谢。
答案 0 :(得分:5)
选择器不会触发操作。一定还有其他触发该动作的东西吗?
例如,在我的ngOnInit中,我有以下内容:
this.store.dispatch(new productActions.Load());
这就是加载我的数据的原因。然后我可以拥有这个:
this.products$ = this.store.pipe(select(fromProduct.getProducts)) as Observable<Product[]>;
哪个选择器可以获取要在UI中使用的数据。
为了确认,我尝试像上面一样注释掉dispatch
,但是它停止工作了(它没有返回任何数据)。
所以我猜是应用程序中的其他地方已经在加载数据了吗?