如何解决离子无法分配给只读属性“属性”的对象“[object Object]”
我正在使用 Angular 框架和 NGRX 开发一个 Ionic 应用程序,但我在选择复选框时遇到问题
问题是这样的:
首先,我使用服务从数据库加载一些车辆列表,接下来,我将 selected 属性设置为 false:
this.vehicleService.loadVehicles().subscribe(data => {
this.vehicles = data.map(v => { v.selected = false; return v; });;
});
然后,我将 vehicles
变量发送到我绘制离子复选框的另一个组件
<app-devices-menu *ngIf="vehicles !== undefined" [vehicles]="vehicles"
(selectedDevices)="selectedVehicles($event)" (currentDevice)="currentVehicle($event)">
</app-devices-menu>
这是我的 app-devices-menu 组件 ts
@Input() vehicles: VehicleItem[];
@Output() selectedDevices = new EventEmitter<VehicleItem[]>();
@Output() currentDevice = new EventEmitter<VehicleItem>();
constructor() { }
ngOnInit() { }
setSelectedDevices(d: VehicleItem) {
this.currentDevice.emit(d);
this.selectedDevices.emit(this.vehicles.filter(v => v.selected === true));
}
html
<ion-menu side="end" class="devices-menu" menuId="devices" contentId="main">
<ion-list>
<ion-item *ngFor="let v of vehicles">
<ion-checkbox (ionChange)="setSelectedDevices(v)" [(ngModel)]="v.selected" slot="start"></ion-checkbox>
<ion-label>{{ v.description }}</ion-label>
</ion-item>
</ion-list>
</ion-menu>
此时一切正常。我想在 ngrx 存储中设置当前车辆(这是我点击的最后一个设备)和所选设备的列表。但问题是当我通过将选定的属性从 true 更改为 false 来调度 selectedVehicles 操作时,我收到此错误
这是我的函数,我从另一个组件获取事件,然后发送操作:
selectedVehicles(ev: VehicleItem[]) {
const selectedDevices: VehicleItem[] = [...ev];
this.store.dispatch(actions.setSelectedVehicles({ vehicles: selectedDevices }));
}
这是我在 store 中设置新数组的 reducer
const reducerMap = createReducer(initialMapState,/* VEHICLE LIST ---------------------------- */
on(actions.setSelectedVehicles,(state,{ vehicles }) => ({ ...state,selectedVehicles: [...vehicles] })),);
export function mapReducer(state,action) {
return reducerMap(state,action);
}
我认为 js 是通过引用工作的,我无法修改商店可能是一个问题,因为如果商品已经在商店中,我无法将所选的属性设置为 false。这就是为什么我需要生成一个新数组,但它似乎在任何时候都无法使用扩展运算符 [...]
如何解决此问题并使用所选车辆和当前车辆更改商店?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。