注销时清除可观察的值

时间:2020-06-16 06:02:11

标签: angular rxjs observable

我想清除注销功能上的可观察值。 以下是我的服务班级中的观察对象

cacheSettingsData$: Observable<any>;

这是分配值的方法。

public getUserSettings() {
    if (!this.cacheSettingsData$) {
      this.cacheSettingsData$ = this.requestUserSettings();
      this.userSettings = this.cacheSettingsData$;
    }
    return this.cacheSettingsData$;
  }

所以问题是当用户注销cachesettingsData $ observable时不会清除,并且如果另一个用户登录时显示的是相同的旧数据。

如何清除可观察对象中的数据,以便在登录时再次加载数据?

2 个答案:

答案 0 :(得分:1)

这取决于您所说的“清晰可观察”的含义。您可以将cacheSettingsData$重新分配给一个空的Observable:

this.cacheSettingsData$ = EMPTY;

但这只会影响新的观察者。

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

loggedOut$ = new Subject();
...

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

然后,您可以将其用作loggedOut$.next(null)

答案 1 :(得分:0)

您可以清除注销事件处理程序上的可观察对象。

this.cacheSettingsData$ = of([]);