0

我正在使用 Angular 6。在 app-root 组件中,我在此 app-root 组件的构造函数中注入 LanguageService,如下所示:

constructor (private router: Router, private languageService: LanguageService) { }

此 LanguageService 将访问本地存储并在其构造函数中初始化一些变量。问题是,每当我试图在 app-root 构造函数中访问这些变量中的任何一个时,我都会得到未定义的值。所以我尝试了诸如 AfterViewInit 之类的角度生命周期钩子,如下所示:

export class AppComponent implements AfterViewInit {
  constructor(private router: Router, private languageService: LanguageService) { }

  ngAfterViewInit() {
    this.router.navigate([this.languageService.language]);
  }
}

但问题仍然存在。如何让应用程序组件等到 LanguageService 完成执行其构造函数,以便这一行:

this.languageService.language

不会返回未定义

更新: 这是语言服务的构造函数:

constructor() { 
  let _language = localStorage.getItem(`pref_lang`);
  if (_language == null) {
    this._language = 'en';
  }
}
4

1 回答 1

0

错误出现在语言服务的构造函数中。

let _language = localStorage.getItem(`pref_lang`);

应该

this._language = localStorage.getItem(`pref_lang`);

if (_language == null)

应该

if (this._language == null)
于 2018-08-27T11:48:35.517 回答