【发布时间】:2022-01-20 04:36:38
【问题描述】:
我正在尝试使用管道从可观察的数组(每个都从 literalsService 获得)执行和获取值。代码如下:
translateLiterals() {
const literalsToTranslate: string[] = [
'certificate_title',
'with_address',
'hereby',
'declare',
'electronic_records',
'proceeded_to_shipment',
'return_address',
'return_address',
'addressee',
'message_subject',
];
const newArray: Observable<string>[] = [];
literalsToTranslate.map(literal => newArray.push(this.literalsService.getValue('Ngwa.Ngwa', literal)));
this.literalsArray$ = forkJoin([...newArray]).pipe(map((results) => {
console.log(results);
return results;
}));
}
我当然订阅了 html 端的管道:
<ng-container *ngIf="literalsArray$ | async"></ng-container>
但是console.log() 从来不打印任何东西...有人知道为什么吗?
【问题讨论】:
-
你忘记订阅你的 observable。你也可以使用 rxjs 的“firstValueFrom”
-
您也错误地使用了
.map()。Array.map()返回一个数组。你正在做一个 foreach。 -
@Carsten 他们在模板中使用
async,所以会在那里订阅 -
this.literalService.getValue返回什么?由此产生的可观察物是否完整? forkJoin 只有在所有 observables 都完成后才会通过 -
forkJoin()的所有源 Observables 至少需要发射一次并完成,所以这可能是你什么都看不到的原因。
标签: angular typescript rxjs