如何在有角管道中的订阅中访问变量以返回转换后的值?
我尝试过的事情
transform(value: any, ...args: any[]): any {
const clientKey = args[0];
let arr = [];
let newValue;
this.dbJobs.getJobsFromKey(clientKey).pipe(take(1)).subscribe(jobs => {
if (jobs && jobs.length) {
jobs.forEach((job) => {
arr.push(job.time);
});
}
newValue = arr.reduce((a, b) => {
return a + b;
}, 0);
return newValue;
});
return newValue;
}
在此示例中未定义newValue
变量。我如何检索它们以返回此订阅外部管道的新值?
答案 0 :(得分:1)
您要像异步获取异步数据一样。那是行不通的。
在管道中,您应该返回Observable值。在这种情况下,您可以在map
Rxjs运算符中而不是在subscribe中修改数据。
transform(value: any, ...args: any[]): any {
const clientKey = args[0];
let arr = [];
let newValue;
return this.dbJobs.getJobsFromKey(clientKey)
.pipe(
take(1),
map(jobs => {
if (jobs && jobs.length) {
jobs.forEach((job) => {
arr.push(job.time);
});
}
newValue = arr.reduce((a, b) => {
return a + b;
}, 0);
return newValue;
}));
}
当您要在模板中使用此管道时,必须将其与AsyncPipe
例如:data | yourPipe | async