繁体   English   中英

ngx-翻译为服务并映射到数组

[英]ngx-translate as service & map to an array

我正在尝试映射一个通过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);

如您所见,我在console.log(res); 我得到正确的值,但是函数没有映射回数组?

当您订阅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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM