Angular 注销时清除可观察到的值

Angular 注销时清除可观察到的值,angular,rxjs,observable,Angular,Rxjs,Observable,我想清除注销函数上的一个可观察值。 下面是我的服务类中可观察到的 cacheSettingsData$: Observable<any>; 因此,问题是当用户注销cacheSettingsData$observable时,如果另一个用户登录,则会显示相同的旧数据 如何清除observable中的数据,以便它在登录时再次加载数据?您可以在注销事件处理程序中清除observable this.cacheSettingsData$ = of([]); 这取决于“清晰可见”的含义。您只

我想清除注销函数上的一个可观察值。 下面是我的服务类中可观察到的

cacheSettingsData$: Observable<any>;
因此,问题是当用户注销cacheSettingsData$observable时,如果另一个用户登录,则会显示相同的旧数据


如何清除observable中的数据,以便它在登录时再次加载数据?

您可以在注销事件处理程序中清除observable

this.cacheSettingsData$ = of([]); 

这取决于“清晰可见”的含义。您只需将
cachesetingsdata$
重新分配给一个空的可观察对象:

this.cacheSettingsData$ = EMPTY;
但这只会影响到新的观察者

如果要通知所有订阅的观察者,可以将主题合并到链中:

loggedOut$ = new Subject();
...

this.cacheSettingsData$ = merge(
  this.requestUserSettings(),
  loggedOut$,
);

然后,您可以将其用作注销处理程序函数中的
loggedOut$。例如,下一步(null)

尝试
删除此项。cacheSettingsData$
删除此项。userSettings
请确保您的函数requestUserSettings返回新的可观察值
loggedOut$ = new Subject();
...

this.cacheSettingsData$ = merge(
  this.requestUserSettings(),
  loggedOut$,
);