我认为我的练习不好,所以请您指导我。
我在提供程序中有一个变量。
@Injectable()
export class SharedService {
public mynumberservice:any=0;
又分为两个部分:MainComponent
和MenuComponent
t我用setTimeout修改此变量的值,这是最好的方法吗?
this.SharedService.mynumberservice=2;
谢谢
https://stackblitz.com/edit/angular-nmmbi4?file=app/main.component.ts
答案 0 :(得分:2)
请勿直接修改值。添加执行此操作的服务方法。
@Injectable()
export class SharedService {
public mynumberservice: number = 0;
mySubject = new Subject();
setMyNumber(value: number) {
this.mynumberservice = value;
}
}
,您可以在组件中通过以下方式进行设置:
this.SharedService.setMyNumber(2);
要获取最新值,您可以使用服务中的observable发出新值并“监听”它们。添加this.mySubject.next(value)
行:
setMyNumber(value: number) {
this.mynumberservice = value;
this.mySubject.next(value);
}
在组件中,您可以执行以下操作:
@Component({
selector: 'main',
template: '{{ SharedService.mySubject | async }}',
styles: []
})