signalstore ondestroy钩子未开火

问题描述 投票:0回答:0
挂钩相当简单,并且被定义为:

onDestroy(store) {
            console.log("destroy")
            patchState(store,initialState);
        }

我提供商店的方式以及其基础服务是通过路由中的

providers

数组。
        providers: [CoursesStore, CoursesService],

我确保两者都是

injectable
;但是,它们并没有像我不想为他们的单身人士那样注入根。这些课程仅存储在内部为其API动作注入课程服务,因此我认为这不是一个可能保留某物参考的问题。

几乎要注意:

我有两个路由文件,具有定义的路由:一个在用户进行身份验证之前,然后在第一个文件中引用的一个,用于所有认证的路由


ex:

{ path: '', loadComponent: () => import('./components/app-authenticated/app-authenticated.component').then( (m) => m.AppAuthenticatedComponent ), loadChildren: () => import('./components/app-authenticated/app-authenticated.routes').then( (m) => m.appAuthenticatedRoutes ), title: 'Home', data: { breadcrumb: 'Home', }, canActivate: [authenticatedGuard, navigatedRoutesGuard], }
  • 如果我要将提供商移至组件级别,则将Ondestroy射击。这是有道理的,因为它会尊重组件的生命周期,但是我希望这家商店在整个路线级别上可用,然后一旦我们离开,然后就丢弃了。
我当然可以通过手动在商店中调用Dispose功能来解决这个问题,但这将打败使用钩子的全部目的。

我错过了关于钩子应该如何工作的基本内容?它是否仅与组件的生命周期绑定,并且在路线级别使用它是不正确的吗?
	
    它确实看起来好像路线提供商中提供的项目没有处置,为了达到所需的行为,我只是创建了一个虚拟包装器组件,其内部纯粹是纯粹是
  • <router-outlet></router-outlet>
  • 从那里,组件处理设置其提供的设置,所有孩子组件都可以访问所需的商店/服务,因为它们将其加载到该父纸条下。这不是理想的解决方案,但肯定比必须手动称呼dispose-更好

angular ngrx ngrx-signal-store
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.