2017-05-07 5 views
0

ngrx에서 Redux 구현을 사용하고 ng-bootstrap의 NgbModal을 사용하여 응용 프로그램에 모달 대화 상자 창을 만듭니다. 약속이되는 속성 중 하나가있는 객체 인 reference to the modal window을 저장해야하며 응용 프로그램 저장소가 적합합니다. 다음 작업을 수행 할 때, :NgZone이 ngrx 저장소에서 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 것을 할 수 없다 저장소에있는 객체를 불변으로 만든다. 어떤 아이디어를 우아하게 우회하는 방법? 감사.

답변

0

는 getter 함수와 페이로드를 대체 그게했다 :

const modalRef: NgbModalRef = this.modal.open(PINModalComponent); 
this.store.dispatch({type: TwoFAActions.STORE_PIN_MODAL_REF, payload:() => modalRef});