变量发生变化时如何监听变量,以便更新所涉及组件中的值?

时间:2019-06-04 05:33:35

标签: angular

我认为我的练习不好,所以请您指导我。

我在提供程序中有一个变量。

@Injectable()
 export class SharedService  {
 public mynumberservice:any=0;

又分为两个部分:MainComponentMenuComponent t我用setTimeout修改此变量的值,这是最好的方法吗?

this.SharedService.mynumberservice=2;

谢谢

https://stackblitz.com/edit/angular-nmmbi4?file=app/main.component.ts

1 个答案:

答案 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: []
    })