Angular 6全局变量更改检测以更改显示的数据

时间:2018-09-25 10:54:42

标签: angular

我需要有关全局变量和检测更改的一些帮助。我正在尝试使用Angular 6创建一个小型ERP系统,主菜单中将有一个可选的全球客户。如果您选择此客户,则该客户应仅显示其单据,付款等。
我尝试使用url进行此操作,但是浏览器刷新出现问题,并且所有组件都通过Router.navigate([])重新加载时看起来很糟糕。
现在,我有一个带有全局变量的服务:

import { Injectable } from '@angular/core';

@Injectable()
export class AppGlobal {
  public GlobalCustomer = '';
}

AppComponentHeaderComponent中,我拥有选择全球客户的全部逻辑,并且将选定的客户存储在sessionStorage中。
如果我在HomeComponent中选择一个客户,然后转到DocumentsComponent,则一切正常,但是当我尝试在DocumentsComponent中选择一个客户时,没有任何变化。我有ngDoCheck()方法:

ngDoCheck() {
  if (sessionStorage.getItem('globalCustomer') != null) {
     this.global.GlobalCustomer = sessionStorage.getItem('globalCustomer');
  } else {
     this.global.GlobalCustomer = 'Choose customer';
  }
}

我无法再次在此处提出http请求以获取新数据,因为它将无限运行ngDoCheck()
我不能使用changeDetection: ChangeDetectionStrategy.OnPush,因为我没有使用任何数组。
我无法加载所有文档并对其使用过滤器,有时它们太多了。

如何在全局变量更改时实现数据刷新?

0 个答案:

没有答案