Вы хотите получать асинхронно данные как синхронно. Это не сработает.
В вашей трубе вы должны вернуть наблюдаемое значение. В этом случае вы изменяете свои данные в операторе map
Rx js, а не в подписке.
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