首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使app-root组件等待服务初始化其变量?

如何使app-root组件等待服务初始化其变量?
EN

Stack Overflow用户
提问于 2018-08-27 11:40:12
回答 1查看 322关注 0票数 0

在app-root组件中,我在这个app-root组件的构造函数中注入LanguageService,如下所示:

代码语言:javascript
复制
constructor (private router: Router, private languageService: LanguageService) { }

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

代码语言:javascript
复制
export class AppComponent implements AfterViewInit {
  constructor(private router: Router, private languageService: LanguageService) { }

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

但问题仍然存在。如何让app组件等待直到LanguageService完成其构造函数的执行,以便这一行:

代码语言:javascript
复制
this.languageService.language

不会返回未定义的

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

代码语言:javascript
复制
constructor() { 
  let _language = localStorage.getItem(`pref_lang`);
  if (_language == null) {
    this._language = 'en';
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 11:48:35

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

代码语言:javascript
复制
let _language = localStorage.getItem(`pref_lang`);

应该是

代码语言:javascript
复制
this._language = localStorage.getItem(`pref_lang`);

代码语言:javascript
复制
if (_language == null)

应该是

代码语言:javascript
复制
if (this._language == null)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52038505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档