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

时间:2018-08-27 11:40:12

标签: angular

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

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

1 个答案:

答案 0 :(得分:0)

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

  public function destroy(Request $request,$id)
{
      $subclient = Sub_clients::findorfail($id);
      if($subclient->delete()){
      return new SubclientResource($subclient);

  }
}

应该是

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

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

应该是

if (_language == null)