我有一个应该打开Google地图的按钮。当我单击它时,我可以看到正在插入的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
)
)
);
尽管状态已经明显改变,但地图并未添加到我的视图中。但是,下次我在屏幕上某处调用动作时,地图就会出现。以前,我在初始化时加载了地图,却从未注意到这个问题,因为随后触发了许多操作,因此总是加载了地图,但是现在看来是偶然的。
答案 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;
});
}