我有一个组件,其中注入了一个服务(我的数据存储库),可以通过延迟加载路由配置(loadChildren)访问该组件。该服务从其他http服务中提供数据。
当用户登出(到另一个不同的路由)并立即使用不同的用户登录时(一个人可以保留两个用户),存储服务会提供之前相同的数据(旧用户),而我认为它应该加载新数据(新用户)。
我认为在用户注销时应该“销毁”服务,因为服务观察者被销毁(在ngOnDestroy中),并且注入不是必要的,因此服务会重新构建。
我知道组件可以通过另一种方法从服务中获取新鲜数据,但我认为服务已经应该从Constructor-ngOnInt中获取数据。问题是该服务没有被销毁或清除...数据仍然来自旧用户。
这是我的代码。
组件
constructor(
public busquedasStore: BusquedasStore) { }
ngOnInit() {
this.busquedasSubs = this.busquedasStore.busquedas.subscribe(b => {
this.busquedas = b;
})
ngOnDestroy() {
this.busquedasSubs.unsubscribe();
}
服务
import { Injectable } from "@angular/core";
import { Observable } from "rxjs/Observable";
import { BehaviorSubject } from "rxjs/BehaviorSubject";
import { UserService } from '../../core/user.service';
@Injectable()
export class BusquedasStore {
busquedas$: BehaviorSubject<{}[]> = new BehaviorSubject([]);
constructor(
public userService:UserService
) {
this.cargarDatosIni();
}
cargarDatosIni() {
this.userService.me().subscribe((res) => {
let busquedas:{}[] = res.user.busqueda;
this.busquedas$.next(busquedas);
},err => {
console.log(err);
});
}
get busquedas(): Observable<{}[]> {
return this.busquedas$;
}
cargarDatosIni
。 - jonrsharpe