angular新手,如何监听某个数据的变化?

  constructor(
    private languageService: LanguageService
  ) {
      this.isEnLanguage = this.languageService.isEnLanguage();
    });
  }

如何才能在languageService.isEnLanguage()改变时改变isEnLanguage的值?

正常在vue里面我可能会使用计算属性,或者是监听函数,angular有什么好的办法吗?

阅读 15.5k
2 个回答

确认的说,angular弃用了angular1中的数据监听$watch方法,原因好像是:这种监听的方式效率太低,会对性能产生的一定的影响。
angular官方引入了rxJS来解决类似于此类的需求。具体到上面的代码,可以这样:

languageService

public isEnLanguage$ = new BehaviorSubject<boolean>(null);

/**
* 调用此方法来设置isEnLanguage的值
**/
setEnLanguage(state: boolen) {
   this.isEnLanguage$.next(state);
}

使用:

  constructor(
    private languageService: LanguageService
  ) {
    this.languageService.isEnLanguage$
      .subscribe((state) => {this.isEnLanguage = state;});
  }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题