Angular 如何链接多个ngrx选择器?
我在index.ts文件中有3个选择器Angular 如何链接多个ngrx选择器?,angular,rxjs,ngrx,Angular,Rxjs,Ngrx,我在index.ts文件中有3个选择器 export const selectDetails=createSelector( //一些代码 ); export const selectTransactionResponse=createSelector( //一些代码 ); export const selectAdditionalDetails=createSelector( //一些代码 ); 这些选择器在各自使用的组件中工作。我有一个用例,我需要在一个新组件中包含所有这些信息,为此我编写
export const selectDetails=createSelector(
//一些代码
);
export const selectTransactionResponse=createSelector(
//一些代码
);
export const selectAdditionalDetails=createSelector(
//一些代码
);
这些选择器在各自使用的组件中工作。我有一个用例,我需要在一个新组件中包含所有这些信息,为此我编写了以下选择器
export const selectSnapshotData=createSelector(
选择详细信息,
选择TransactionResponse,
选择其他详细信息,
(详细信息、交易响应、附加详细信息)=>({
其他详细信息,
细节,
事务响应
}作为快照数据)
);
现在,当我在新组件中使用此选择器时,如下所示:
this.store.pipe(
选择(从详细信息。选择快照数据),
过滤器(快照数据=>!!快照数据),
takeUntil(this.destroy$).subscribe(快照数据=>{
log(“让我们看看记录了多少次”);
console.log(快照数据);
});
subscribe中的代码执行3次,每次在存储中加载每个信息时执行一次
我想让这个方法在所有信息都可用时执行一次。为此,我尝试在组件中使用forkjoin,而不是在index.ts中编写自定义选择器,但这也不起作用
那么有没有办法做到这一点呢?首先,欢迎来到Stackoverflow 考虑引入一个IF语句,验证所有所需数据是否可用,如下所示:
export const selectSnapshotData=createSelector(
选择详细信息,
选择TransactionResponse,
选择其他详细信息,
(详细信息、交易响应、附加详细信息)=>{
if(详细信息和交易响应和附加详细信息){
返回{
其他详细信息,
细节,
transactionResponse,
}作为快照数据;
}
}
);
可选择使用跳过运算符:
this.store.pipe(
选择(从详细信息。选择快照数据),
跳过(2),
takeUntil(这个.destroy$),
).subscribe(快照数据=>{
log(“让我们看看记录了多少次”);
console.log(快照数据);
});
首先,欢迎来到Stackoverflow
考虑引入一个IF语句,验证所有所需数据是否可用,如下所示:
export const selectSnapshotData=createSelector(
选择详细信息,
选择TransactionResponse,
选择其他详细信息,
(详细信息、交易响应、附加详细信息)=>{
if(详细信息和交易响应和附加详细信息){
返回{
其他详细信息,
细节,
transactionResponse,
}作为快照数据;
}
}
);
可选择使用跳过运算符:
this.store.pipe(
选择(从详细信息。选择快照数据),
跳过(2),
takeUntil(这个.destroy$),
).subscribe(快照数据=>{
log(“让我们看看记录了多少次”);
console.log(快照数据);
});