简体   繁体   English

Angular - 可观察对象没有响应

[英]Angular - subject observable not responding

I have one service SelectorService where I have defined the subject and an observable.我有一个服务 SelectorService,我在其中定义了主题和可观察对象。

private eventEligibleApiStatus = new Subject<any>();
public eventEligibleApiStatusUpdated$ = this.eventEligibleApiStatus.asObservable();

And I have defined a method which calls the subject.next.我已经定义了一个调用 subject.next 的方法。

notifyEventEligibleApiStatus(status) {
  this.eventEligibleApiStatus.next(status);
}

Now in another component called scheduler-component.ts, I have defined one boolean flag and an observable现在在另一个名为 scheduler-component.ts 的组件中,我定义了一个 boolean 标志和一个可观察对象

  eventEligibleInProgress = false;

  eventEligibleListener: Observable<any> = this.resourceSelectorService.eventEligibleApiStatusUpdated$;

And I am subscribing to this observable我正在订阅这个可观察的

   this.eventEligibleListener.subscribe( status => {
     this.eventEligibleInProgress = status;
   });

From SelectorComponent, I am calling the SelectorService's, notifyEventEligibleApiStatus like this,在 SelectorComponent 中,我这样调用 SelectorService 的 notifyEventEligibleApiStatus,

this.selectorService.notifyEventEligibleApiStatus(true);

whenever the notifyEventEligibleApiStatus function is triggered, the control does not come to the eventEligibleListener.subscribe and the flag is also not changed.每当触发 notifyEventEligibleApiStatus function 时,控件不会进入 eventEligibleListener.subscribe 并且标志也不会更改。

What am I doing wrong here.我在这里做错了什么。

PS: I am new to Angular and Front End development. PS:我是 Angular 和前端开发的新手。

May be SelectorService is not SingleTon and creating different object for each component.可能是 SelectorService 不是 SingleTon 并且为每个组件创建不同的 object。 One way you can try @Injectable({ providedIn: 'root' }) this will create SingleTon object and same object will be shared across the components.您可以尝试@Injectable({ providedIn: 'root' })一种方法,这将创建 SingleTon object 并且相同的 object 将在组件之间共享。

You have not declared eventEligibleApiStatus subject in your code.您尚未在代码中声明 eventEligibleApiStatus 主题。 You have shared bits of codes.您已经共享了一些代码。 Try sharing complete code so that we can have a better understaning instead of guessing.尝试共享完整代码,以便我们更好地理解而不是猜测。

Try using behaviourSubject尝试使用 behaviorSubject

private eventEligibleApiStatus = new BehaviorSubject<any>(null);
public eventEligibleApiStatusUpdated$ = this.eventEligibleApiStatus.asObservable();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM