translateService.onLangChange.subscribe在OnInit中lang发生变化时不会触发



所以我在一个组件中有translateService.onLangChange.subscribe,它工作得很好,但是我做了一个单独的服务,它会订阅langChange并为我设置一个localeDate。但是当我改变lang时,它不注册它,什么也不做。

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;
  }

也是每次lang改变时我希望我的组件从getLocaleDateFormat()中获取该值,而不需要

this.translateService.onLangChange.subscribe(() => thisLocaleDateAdapterService.getLocaleDateFormat()); 

在我的组件。我尝试订阅它,但得到一个错误,它不是一个函数。

这是我尝试过的:

this.localeDateAdapterService.getLocaleDateFormat().subscribe(currLang => this.currLang = currLang);

我想让它监听getLocaleDateFormat并在它改变的时候改变它的值

更新:我刚刚意识到问题是在OnInit中,这不会触发语言变化。LangChange是服务内部的触发函数,而不是OnInit

忘记把调用onLang的服务放在主模块Provider中了

相关内容

  • 没有找到相关文章

最新更新