我需要有关全局变量和检测更改的一些帮助。我正在尝试使用Angular 6创建一个小型ERP系统,主菜单中将有一个可选的全球客户。如果您选择此客户,则该客户应仅显示其单据,付款等。
我尝试使用url进行此操作,但是浏览器刷新出现问题,并且所有组件都通过Router.navigate([])
重新加载时看起来很糟糕。
现在,我有一个带有全局变量的服务:
import { Injectable } from '@angular/core';
@Injectable()
export class AppGlobal {
public GlobalCustomer = '';
}
在AppComponent
和HeaderComponent
中,我拥有选择全球客户的全部逻辑,并且将选定的客户存储在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
,因为我没有使用任何数组。
我无法加载所有文档并对其使用过滤器,有时它们太多了。
如何在全局变量更改时实现数据刷新?