跨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