在Angular2中使用Rxjs BehaviorSubject时检查所需的值

时间:2017-09-08 09:15:36

标签: angular rxjs angular2-services angular2-observables

我能够得到' 0'我的componentsnet2中的值,但不是this.navItem $在UserService

下的下一个值
         `import { Injectable } from '@angular/core';
          import { Observable } from 'rxjs';
          import { BehaviorSubject } from 'rxjs/BehaviorSubject';

           @Injectable()
            export class UserService {
             constructor() {}

                 // Observable navItem source
                 public _navItemSource = new BehaviorSubject(0);

                // Observable navItem stream
                navItem$ = this._navItemSource.asObservable();

                // service command
                      changeNav(number) {
                      this._navItemSource.next(number);
                      console.log(this._navItemSource.getValue())
                      console.log(this.navItem$)
                }
          }`

我使用的服务如下

      `export class Component1{
             constructor(private _userService: UserService)
             fun(){
             this._userService.changeNav(this.notificationslist)
             }
        }`

在我想要检查服务中的值

的另一个组件中
          `  export class Component2{
             ngOnInit() {
               this.subscription = this._userService.navItem$
               .subscribe(item => this.item1 = item)
                console.log(this.subscription)
                console.log(this.item1)
               }
            }`

我的问题是,当我订阅时,我在控制台上获得以下数据 我只得到初始值' 0'但不是下一个改变的值,
 我怎样才能检查数组中的最后一个值或特定值,这个值已经从例如#34;状态:进入"到"状态:成功"每次我打开component2因为根据那个状态我必须显示和隐藏一些元素

1 个答案:

答案 0 :(得分:0)

我认为这应该是有帮助的,有很多没有。对于同一场景的答案,但我们通常不会注意答案的细节,而且我发布的问题与其他人已经面临的问题相同。 我们不应该在每个组件中使用提供程序:[xyzservice],而应该只在较高的根组件上使用。 以下链接中已有答案:

Angular2 + RxJS BehaviorSubject subscription not working on all components

Angular2: subscribe to BehaviorSubject not working

Angular2 Observable BehaviorSubject service not working