在我的应用程序中,我有不同的延迟加载模块,并且在每个模块中我都需要一个Count,该计数对于所有模块来说都是一个 例如,如果我在购物模块中增加计数,那么我应该在付款模块中获得此增加的计数 我该如何实现?
答案 0 :(得分:1)
最好的方法是使用共享服务。您的服务可以由每个模块中的组件访问,并且设置简单:
export class CounterService {
public counter = 0;
constructor() { }
incrementCounter(): void {
this.counter++;
}
getCounter(): void {
return this.counter;
}
}
这有两个明显的方法可以调用,incrementCounter()每次加1,还有一个get方法。例如,您可能有一个setCounter()可以在其中设置值,或者有一个decrementCounter()可以减少一。
答案 1 :(得分:0)
您可以通过以下两种方式获得计数:
shared.service.ts
,在其中以以下方式声明getter setter并添加到App.module.ts
;
// shared.service.ts
import { Injectable } from '@angular/core';
@Injectable()
export class SharedService {
public count =0;
setCount(countValue:number){
this.count+= countValue;
}
getCount():number{
return this.count;
}
}
在app.module中声明的服务在整个应用程序中具有作用域,它们是 只能初始化一次
因此您不会怀疑:“这将在另一个模块中将计数再次初始化为0,我想在一个模块中更新此计数,并希望在另一个模块中访问该修改后的计数”。
现在在要使用计数器的每个组件中,只需使用共享服务调用setter和getter函数即可。
这是工作示例:
https://stackblitz.com/edit/angular-ft4etg
PS:尽管该示例未实现延迟加载,但是为了充分理解其行为。