Angular NGRX reducer函数返回2个对象
我在一个在线课程的帮助下创建了一个reducer函数,但它并没有完全按照我的预期工作 这是我按下列表中的3辆车后给出的控制台窗口。蓝色数字是ID,当我按下列表中的对象时,它就会触发Angular NGRX reducer函数返回2个对象,angular,typescript,rxjs,ngrx,Angular,Typescript,Rxjs,Ngrx,我在一个在线课程的帮助下创建了一个reducer函数,但它并没有完全按照我的预期工作 这是我按下列表中的3辆车后给出的控制台窗口。蓝色数字是ID,当我按下列表中的对象时,它就会触发 首先,我按下ID为93的车辆“1075” 之后,我按下ID为92的车辆“1072” 最后,我按下ID为91的车辆“1067” 现在它首先返回“previous”对象,这是我第一次按下它时的一个空数组,几秒钟后它返回我按下的对象 我的代码如下所示: // initial state export const init
// initial state
export const initialState: VehicleDetailState = {
entities: [],
loaded: false,
loading: false
};
// my reducer
export function reducer(
state = initialState,
action: fromVehicleDetail.VehicleDetailAction
): any {
switch (action.type) {
case fromVehicleDetail.LOAD_VEHICLEDETAIL_SUCCESS: {
const vehicledetail = action.payload;
const entities = vehicledetail;
return {
entities
};
}
}
return state;
}
我曾尝试在“LOAD_VEHICLEDETAIL”案例中返回不同的内容,但每当我尝试返回时,都会返回一个错误,这部分代码如下:
// my listcomponent
onClick() {
this.store.select(fromStore.getAllVehicleDetail).subscribe(data => {
this.vehicleDetail = data;
console.log(this.vehicleDetail);
if (this.vehicleDetail.position) {
this.setMap();
this.setMarkers();
return;
}
this.failSetMap();
this.setMarkers();
});
this.store.dispatch(new fromStore.LoadVehicleDetail());
}
}
(顺便说一下,console.log(this.vehicleDetail)是console窗口中正在记录的内容)
错误在哪里
TypeError:无法读取未定义的属性“位置”
如何才能只返回我最近在列表中按下的对象?单击即订阅。这意味着,在开始时以及每次存储更改时都会触发观察者。不应单击即订阅。单击即订阅,单击即发送
onInit() {
this.store.select(fromStore.getAllVehicleDetail).subscribe(data => {
this.vehicleDetail = data;
console.log(this.vehicleDetail);
if (this.vehicleDetail.position) {
this.setMap();
this.setMarkers();
return;
}
this.failSetMap();
this.setMarkers();
});
}
}
onClick() {
this.store.dispatch(new fromStore.LoadVehicleDetail());
}
在此片段中,观察者在init上订阅。每次存储更改时,都会触发观察者。单击时会添加一辆新车辆。单击后,会创建一辆新车辆并将其添加到存储中。然后更改存储并触发观察者。您在单击时订阅。这意味着您的观察者在开始和结束时都会被触发每次商店更改时。您不应该单击订阅。在init上订阅并在单击时发送。非常感谢@ThomasSablik订阅的一个好处是它对设置我的地图很有用。如果我尝试在.subscribe()之外使用我的“this.setMarkers()”函数它不会做任何事情,因为在我单击该项目后的第一秒钟内,位置未定义。是否有任何方法可以解决此问题,以便每当我的web api中的数据交付时,地图都会放大到正确的位置?非常感谢!