我目前正在使用带有ngrx的angular-cli项目(1.0.0-beta.25.5)来管理状态 . 我已经关注this article并设法让热模块更换工作,但是当发生这种情况时我还没有找到维持状态的方法 .
我见过以下但是无法获得任何工作或获取灵感:
-
https://github.com/AngularClass/angular2-hmr(想想你需要访问webpack config来添加加载器)
-
Angular 2 : Thoughs about HMR and @ngrx/store(尝试过get__HMR__state,但对我没用)
有没有人对如何处理这个有任何想法或建议?我希望继续使用cli,因此需要找到一种与此相结合的方法 .
编辑:在这里找到有同样问题的人https://github.com/ngrx/store/issues/311
1 回答
我知道这是死灵法术; P但是对于一些人来说这仍然有用 .
TL; DR
你从角度级HMR中错过的很可能是用于设置完整状态的metareducer .
下面是我如何实现HMR与链接到我从中派生的示例https://github.com/gdi2290/angular-hmr
Metareducer
首先,你需要一个metareducer来处理整个状态 .
为NgModule注册StoreModule.forRoot时,请记住注册该metareducer数组 .
AppModule
对于AppModule,您需要定义hmrOnInit,hmrOnDestroy和hmrAfterDestroy方法 .
hmrOnInit加载状态
hmrOnDestroy写入状态(注意ngrx store.take(1)实际上是同步它's listed somewhere in the ngrx github issues, can'似乎找到了atm) .
hmrAfterDestroy清除现有的组件元素
有关更具体的信息,请参阅https://github.com/gdi2290/angular-hmr