-1

所以我在一个组件中有 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 中,这并没有触发 lang 更改。LangChange 在函数中的服务内部触发,但在 OnInit 中不触发

4

1 回答 1

0

忘记将调用 onLang 的服务放在主模块 Provider 中。

于 2021-01-23T16:39:22.177 回答