angular - 在转换管道中使用链式可观察对象
问题描述
在转换管道中链接可观察对象时遇到问题。我有带有加密帐号的银行信息。我想解密那个帐号并显示。
在控制台中,它显示解密的帐号,但仅显示加密的帐号。请帮忙
public transform(bankId: any, name: string, args?: any): Observable<string> {
return this.supService.getBankById(bankId).pipe(
switchMap(
(bInfo: {
data: {
bankInfo: {
accno;
};
};
}) => {
if (bInfo.data.bankInfo.accno) {
const encodedAccountNumber = bInfo.data.partyBankInfo.accountNumber;
this.supService.unProtectBank(encodedAccountNumber).subscribe(
(data: any) => {
console.log("Unencrypted data======>", data);
bInfo.data.bankInfo.accno = data;
});
}
return of(bInfo);
}),
map(
(info: {
data: {
bankInfo: {
accno;
};
};
}) => {
console.log("Bank Info==============>", bankInfo);
if (name === 'accountNumber') {
return info.data.bankInfo.accno;
}
}
)
);
}
解决方案
您的第一个switchMap
操作of(bInfo)
立即返回,您没有任何机会进行内部调用来完成和更新值。
您需要做的是将您的内容替换为switchMap
:
if (bInfo.data.bankInfo.accno) {
const encodedAccountNumber = bInfo.data.partyBankInfo.accountNumber;
// Do not subscribe here
return this.supService.unProtectBank(encodedAccountNumber).pipe(
map((data: any) => {
console.log("Unencrypted data======>", data);
bInfo.data.partyBankInfo.accountNumber = data;
// Return something out of the Observable
return bInfo;
})
);
} else {
return of(bInfo);
}
这里的关键是return
声明和删除subscribe
赞成pipe
.
推荐阅读
- sql - 建立强制一到可选一
- scala - Why is Dataproc using this weird shaded version of the JSON package and how do I work with it?
- laravel - 单击链接并返回后获取表单值
- python - 如果它等于 1,则使用 tf.cond 挤压第一个维度
- php - HTML tag is not working properly in localhost?
- wechat - 微信社交登录错误:“糟糕,出了点问题:(”
- terraform - terraform ebs_block_device 与 aws_ebs_volume 资源
- node.js - express 测试路由器 app.use("v1/books", bookRouter)
- tensorflow - Keras 回调请求额外的张量
- php - 如果下拉菜单中的子页面已打开,我如何提供菜单项 id="active"?PHP