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 对象,并且相同的对象将在组件之间共享。
我有一个服务 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 对象,并且相同的对象将在组件之间共享。