translateService.onLangChange.subscribe 在 OnInit 中更改语言时不会触发
translateService.onLangChange.subscribe does not trigger when lang changes in OnInit
所以我在一个组件中使用了 translateService.onLangChange.subscribe,它运行良好,但如果它会订阅 langChange 并为我设置一个 localeDate,则创建一个单独的服务。但是,当我更改语言时,它不会注册它并且什么也不做。
ngOnInit(): void {
this.getLocaleDateFormat();
this.translateService.onLangChange.subscribe(() => this.getLocaleDateFormat());
}
getLocaleDateFormat() {
// To add another lang it has to be added to Languages bellow to match the locale_id of the lang and in main module it has to be imported and registered
this.dateAdapter.setLocale(Languages[this.translateService.currentLang]);
this.currLang = Languages[this.translateService.currentLang];
console.log('locale-date-adapters currLang: ' + this.currLang);
return this.currLang;
}
同样,每次语言更改时,我都希望我的组件从 getLocaleDateFormat() 获取该值,而无需
this.translateService.onLangChange.subscribe(() => thisLocaleDateAdapterService.getLocaleDateFormat());
在我的组件中。我尝试订阅它,但收到一个错误,提示它不是一个函数。
这是我试过的:
this.localeDateAdapterService.getLocaleDateFormat().subscribe(currLang => this.currLang = currLang);
我基本上希望它监听 getLocaleDateFormat 并在它更改时更改值。
更新:
我刚刚意识到问题出在不会触发语言更改的 OnInit 中。 LangChange 是服务内部函数的触发器,但不是 OnInit
忘记将调用 onLang 的服务放在主模块 Provider 中。
所以我在一个组件中使用了 translateService.onLangChange.subscribe,它运行良好,但如果它会订阅 langChange 并为我设置一个 localeDate,则创建一个单独的服务。但是,当我更改语言时,它不会注册它并且什么也不做。
ngOnInit(): void {
this.getLocaleDateFormat();
this.translateService.onLangChange.subscribe(() => this.getLocaleDateFormat());
}
getLocaleDateFormat() {
// To add another lang it has to be added to Languages bellow to match the locale_id of the lang and in main module it has to be imported and registered
this.dateAdapter.setLocale(Languages[this.translateService.currentLang]);
this.currLang = Languages[this.translateService.currentLang];
console.log('locale-date-adapters currLang: ' + this.currLang);
return this.currLang;
}
同样,每次语言更改时,我都希望我的组件从 getLocaleDateFormat() 获取该值,而无需
this.translateService.onLangChange.subscribe(() => thisLocaleDateAdapterService.getLocaleDateFormat());
在我的组件中。我尝试订阅它,但收到一个错误,提示它不是一个函数。
这是我试过的:
this.localeDateAdapterService.getLocaleDateFormat().subscribe(currLang => this.currLang = currLang);
我基本上希望它监听 getLocaleDateFormat 并在它更改时更改值。
更新: 我刚刚意识到问题出在不会触发语言更改的 OnInit 中。 LangChange 是服务内部函数的触发器,但不是 OnInit
忘记将调用 onLang 的服务放在主模块 Provider 中。