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$,
);