Angular - 对象可观察对象没有响应

Angular - subject observable not responding

我有一个服务 SelectorService,我在其中定义了主题和一个可观察对象。

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

并且我定义了一个调用 subject.next 的方法。

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

现在在另一个名为 scheduler-component.ts 的组件中,我定义了一个布尔标志和一个 observable

  eventEligibleInProgress = false;

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

我正在订阅这个 observable

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

我从 SelectorComponent 调用 SelectorService 的 notifyEventEligibleApiStatus,

this.selectorService.notifyEventEligibleApiStatus(true);

每当触发notifyEventEligibleApiStatus函数时,控件不会到达eventEligibleListener.subscribe并且标志也不会改变。

我哪里做错了。

PS:我是 Angular 和前端开发的新手。

您尚未在代码中声明 eventEligibleApiStatus 主题。您已经共享了一些代码。尝试分享完整的代码,让我们更好地理解而不是猜测。

尝试使用 behaviorSubject

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

可能是 SelectorService 不是 SingleTon 并且为每个组件创建了不同的对象。您可以尝试的一种方法 @Injectable({ providedIn: 'root' }) 这将创建 SingleTon 对象,并且相同的对象将在组件之间共享。