Javascript NgZone试图在ngrx商店中改变承诺
我正在使用ngrx的Redux实现,并使用ng引导的NgbModal在我的应用程序中创建模式对话框窗口。我需要存储,这是一个对象,其中一个属性是promise,而应用程序存储区正是这样做的合适位置。但是,当我执行以下操作时:Javascript NgZone试图在ngrx商店中改变承诺,javascript,typescript,redux,ngrx,Javascript,Typescript,Redux,Ngrx,我正在使用ngrx的Redux实现,并使用ng引导的NgbModal在我的应用程序中创建模式对话框窗口。我需要存储,这是一个对象,其中一个属性是promise,而应用程序存储区正是这样做的合适位置。但是,当我执行以下操作时: const modalRef: NgbModalRef = this.modal.open(PINModalComponent); this.store.dispatch({type: TwoFAActions.STORE_PIN_MODAL_REF, payload: m
const modalRef: NgbModalRef = this.modal.open(PINModalComponent);
this.store.dispatch({type: TwoFAActions.STORE_PIN_MODAL_REF, payload: modalRef});
我明白了:
ERROR TypeError: Cannot assign to read only property '_nesting' of object '#<NgZone>'
at NgZone.onLeave (core.es5.js:4165)
at Object.onInvokeTask (core.es5.js:4119)
at ZoneDelegate.webpackJsonp.988.ZoneDelegate.invokeTask (zone.js:366)
at Zone.webpackJsonp.988.Zone.runTask (zone.js:166)
at HTMLButtonElement.ZoneTask.invoke (zone.js:420)
ERROR-TypeError:无法分配给对象的只读属性“#nesting”
在NgZone.onLeave(core.es5.js:4165)
位于Object.onInvokeTask(core.es5.js:4119)
在ZoneDelegate.webpackJsonp.988.ZoneDelegate.invokeTask(zone.js:366)
位于Zone.webpackJsonp.988.Zone.runTask(Zone.js:166)
在HTMLButtonElement.ZoneTask.invoke(zone.js:420)
看起来NgZone试图改变作为操作负载一部分的承诺,但无法做到这一点,因为ngrx使其存储中的对象不可变。有没有办法优雅地绕过这个问题?谢谢。用getter函数替换了有效负载,成功了:
const modalRef: NgbModalRef = this.modal.open(PINModalComponent);
this.store.dispatch({type: TwoFAActions.STORE_PIN_MODAL_REF, payload: () => modalRef});