跨Angular组件分布数据的最佳实践?

我有一个很大的Angular SPA,它带有路由器出口和不同级别的组件。 当前,我的应用程序支持不同的区域,其中区域的更改是通过本地存储完成的。因此,当用户更改区域时,应用程序仅更新本地存储中的区域值并重新加载应用程序(window.reload)。

该解决方案可以正常工作,但容易出错,因为我需要始终从localstorage读取区域,并且它对Angular Universal不友好。

您能否建议最好的解决方案来存储区域或跨所有组件访问它? 我需要对主题使用服务吗? 还是使用类似于Redux的RxJS?

请帮忙

评论
若弱C
若弱C

如果您只需要存储区域状态,则可以使用单例服务

   @Injectable({
  providedIn:"root"
})
export class RegionStore{
    private _region$ = new BehaviourSubject<string>();

    public region$(){
      return this._region$.asObservable();
    }

    public region(){
      return this._region$.getValue();
    }

    changeRegion(region:string){
      this._region$.next(region);
    }

}

but if you want to have application state as a whole, then you could use NGRX NGXS Akita

点赞
评论