我正在尝试映射一个通过ngx-translate服务传递它的数组。一定迟到了,我累了。这似乎是未定义的回归,对于我的生活,我无法弄清楚原因:
datasetLabels: any = ['DASHBOARD.PITCHING_VOLUME.SENT', 'DASHBOARD.PITCHING_VOLUME.RESPONDED', 'DASHBOARD.PITCHING_VOLUME.SECURED'];
this.datasetLabels = this.datasetLabels.map((label) => {
this.translate.get(label).subscribe((res: string) => {
console.log(res); // outputs correct translations
return res;
});
});
console.log(this.datasetLabels);
正如您在{I console.log(res);
处看到的那样,我得到了正确的值,但函数没有映射回数组?
答案 0 :(得分:0)
当您订阅Observable时,这意味着您正在以异步方式工作。
如果你想将值保存在observable之外(这不是一个好主意,你应该把它们保存为流),你可以这样做:
const datasetLabels: string = [
'DASHBOARD.PITCHING_VOLUME.SENT',
'DASHBOARD.PITCHING_VOLUME.RESPONDED',
'DASHBOARD.PITCHING_VOLUME.SECURED',
];
const getLabelsStreams: Observable<string>[] = labels =>
labels.map(this.translate.get);
const labels$: Observable<string>[] = getLabelsStreams(datasetLabels);
forkJoin(labels$)
.pipe(tap(labels => (this.datasetLabels = labels)))
.subscribe();