问题描述
在Angular 2中,我有带有一些自定义标签的日期范围选择器。代码是
HTML
URIResolver
还有标签
TS
SAXSource
我需要根据页面语言以编程方式更改标签。我尝试使用this.translate.instant('label'),但不起作用。那么,使用ngx-translate转换数组元素的最直接方法是什么?
解决方法
我们遇到了类似的问题,我们使用 this.translate.instant('label') 解决了它。在您的 .ts 文件中,您需要订阅语言更改,例如:
this.languageSubscription = this.translate.onLangChange.subscribe(() => {
this.ranges = this.populateDatePickerPredefinedRangeLabels();
});
填充范围的方法应该是:
populateDatePickerPredefinedRangeLabels() {
let ranges = {};
let today = this.translate.instant("GRAPH.TODAY");
let yesterday = this.translate.instant("GRAPH.YESTERDAY");
let last7Days = this.translate.instant("GRAPH.LAST_7_DAYS");
let last30Days = this.translate.instant("GRAPH.LAST_30_DAYS");
let thisMonth = this.translate.instant("GRAPH.THIS_MONTH");
let lastMonth = this.translate.instant("GRAPH.LAST_MONTH");
ranges[today] = [moment(),moment()];
ranges[yesterday] = [
moment().subtract(1,"days"),moment().subtract(1,];
ranges[last7Days] = [moment().subtract(6,moment()];
ranges[last30Days] = [moment().subtract(29,moment()];
ranges[thisMonth] = [moment().startOf("month"),moment().endOf("month")];
ranges[lastMonth] = [
moment().subtract(1,"month").startOf("month"),"month").endOf("month"),];
return ranges;
}
更改语言后,“范围将填充新值,日期范围选择器将刷新。