【发布时间】:2017-05-07 12:48:36
【问题描述】:
我正在使用来自 ngrx 的 Redux 实现,并使用来自 ng-bootstrap 的 NgbModal 在我的应用程序中创建模式对话框窗口。我需要存储reference to the modal window,它是一个对象,其中一个属性是一个promise,而应用程序商店是合适的地方。但是,当我执行以下操作时:
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)
看起来 NgZone 试图改变作为动作有效负载一部分的承诺,但不能这样做,因为 ngrx 使其存储中的对象不可变。任何想法如何优雅地规避这个?谢谢。
【问题讨论】:
标签: javascript typescript redux ngrx