我想清除注销功能上的可观察值。 以下是我的服务班级中的观察对象
cacheSettingsData$: Observable<any>;
这是分配值的方法。
public getUserSettings() {
if (!this.cacheSettingsData$) {
this.cacheSettingsData$ = this.requestUserSettings();
this.userSettings = this.cacheSettingsData$;
}
return this.cacheSettingsData$;
}
所以问题是当用户注销cachesettingsData $ observable时不会清除,并且如果另一个用户登录时显示的是相同的旧数据。
如何清除可观察对象中的数据,以便在登录时再次加载数据?
答案 0 :(得分:1)
这取决于您所说的“清晰可观察”的含义。您可以将cacheSettingsData$
重新分配给一个空的Observable:
this.cacheSettingsData$ = EMPTY;
但这只会影响新的观察者。
如果您想通知所有订阅的观察者,可以将主题合并到链中:
loggedOut$ = new Subject();
...
this.cacheSettingsData$ = merge(
this.requestUserSettings(),
loggedOut$,
);
然后,您可以将其用作loggedOut$.next(null)
。
答案 1 :(得分:0)
您可以清除注销事件处理程序上的可观察对象。
this.cacheSettingsData$ = of([]);