ngx-translate as service&映射到数组

时间:2018-02-16 07:53:36

标签: javascript angular ngx-translate

我正在尝试映射一个通过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);处看到的那样,我得到了正确的值,但函数没有映射回数组?

1 个答案:

答案 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();