Angular 无法从存储中选择最新的ID,withLatestFrom返回上一个ID而不是最后一个,为什么?

Angular 无法从存储中选择最新的ID,withLatestFrom返回上一个ID而不是最后一个,为什么?,angular,rxjs,ngrx,typescript-typings,Angular,Rxjs,Ngrx,Typescript Typings,我正在尝试创建母版/详细信息页面,我需要母版id来检索详细信息列表的相关记录 我有一个选择器 export const selectRecords=(state:CoreState)=>state.records; export const getId=createSelector(selectRecords, (state:myState)=>state&&state.selectedRecords&&state.selectedRecords.id ); 实际上,我正在尝试从商店获取最新的

我正在尝试创建母版/详细信息页面,我需要母版id来检索详细信息列表的相关记录

我有一个选择器

export const selectRecords=(state:CoreState)=>state.records;
export const getId=createSelector(selectRecords,
(state:myState)=>state&&state.selectedRecords&&state.selectedRecords.id
);
实际上,我正在尝试从商店获取最新的id,比如:

@Effect()
getSomething$=此.actions$.pipe(
类型(MyType.GET_记录),
withLatestFrom(this.store.select(getId)),
开关映射(([action,id])=>{
this.log.debug('Get ID',ID);
…打电话给我
})
);
但是,即使我在使用
和latestfrom
时,我得到的是以前的ID,而不是最新的ID

当我从Redux检查控制台时,状态中selectedRecords.id是正确的(最新的),即我要检索的


我知道这是一个漫长的过程,但有没有人能给我一些提示或建议,让我从商店中获取正确的最后一个id?

我通过在最晚的时间之前添加一个debounceTime(0)来解决这个问题:

更新工作代码为:

@Effect()
    getSomething$ = this.actions$.pipe(
        ofType<GetMyRecords>(MyType.GET_RECORDS),
        debounceTime(0),
        withLatestFrom(this.store.select(getId)),
        switchMap(([action, id]) => {
            this.log.debug('Get ID', id);
            ... calling my service here
        })
    );
@Effect()
getSomething$=此.actions$.pipe(
类型(MyType.GET_记录),
去BounceTime(0),
withLatestFrom(this.store.select(getId)),
开关映射(([action,id])=>{
this.log.debug('Get ID',ID);
…打电话给我
})
);
我正在添加一个链接,描述我遇到的EXACT问题:

换句话说.withLatestFrom(item.asObservable())无法提供 实际最新下一个事件的非零值,但提供上一个 一个人的零价值


您能否将
替换为LatestFrom(this.store.select(getId))
替换为
switchMap((操作)=>this.store.select(getId).pipe(map(id=>([action,id])),take(1))
,看看这是否有帮助,@WillTaylor得出相同的结果。第一次出现错误时,当我返回到我的列表,从列表到详细信息,我必须根据主控ID加载网格,它使用以前访问的详细信息ID。它好像总是落后一步,即使在REDUX中,我看到了正确的ID。也许这会有所帮助,但我只是尝试了CombineTest而不是withLatestFrom,它成功了。但是我得到一个警告“combineLatest”已被弃用。我试图替换它并从“rxjs”而不是“rxjs/operators”的combineLatest加载它,但像这样它需要第二个参数,我所做的并不是真正组合两个选择。我不知道接线员是怎么工作的。。。