NGRX:状态更改后视图未更新

时间:2019-06-02 11:49:25

标签: angular ngrx

我有一个应该打开Goog​​le地图的按钮。当我单击它时,我可以看到正在插入的google脚本,该脚本调用了将消息发送到我的reducer的回叫。

我看到消息来了,日志记录显示值1已添加到状态中。

    case StateActions.SET_MAP_STATE:
        const tmp = { ...state, mapState: action.payload };
        console.log(tmp);
        return tmp;

我的模板看起来像

<app-map
    *ngIf="(mapState | async) > 0"
></app-map>

并且该组件包括

    this.mapState = this.store.pipe(
        select(
            createSelector(
                getState,
                (state: AppState) => state.mapState
            )
        )
    );

尽管状态已经明显改变,但地图并未添加到我的视图中。但是,下次我在屏幕上某处调用动作时,地图就会出现。以前,我在初始化时加载了地图,却从未注意到这个问题,因为随后触发了许多操作,因此总是加载了地图,但是现在看来是偶然的。

1 个答案:

答案 0 :(得分:0)

google map事件在角度区域更改检测之外运行,这些事件不像标准addEventListener那样被称为“猴子补丁”。我想您是从Google Map事件的事件处理程序中调度事件的。您应该使用run中的NgZone

// event listener binded to a google map event
() => {
  this.ngZone.run(() => {
    // dispatch StateActions.SET_MAP_STATE action;
  });
}