当前位置: 代码迷 >> JavaScript >> 错误错误:未捕获(承诺):类型错误:无法在 ionic 4 Angular 中设置未定义的属性“设备”
  详细解决方案

错误错误:未捕获(承诺):类型错误:无法在 ionic 4 Angular 中设置未定义的属性“设备”

热度:142   发布时间:2023-06-05 10:30:49.0

我有一个名为 MyDevicesPage 的类,它控制一个页面,我试图操作 res 对象,然后将其传递给 DataService 的 updateDevicesToServer 方法以进行进一步操作。 代码编译得很好,但在运行时它会抛出一个错误错误错误:未捕获(承诺):类型错误:无法设置未定义的属性“设备”

这是类和相关的接口

export class MydevicesPage implements OnInit {  

  devices : Array<deviceInterface>
  constructor(private deviceService : DeviceService,private route:  ActivatedRoute,private router: Router, private authenticationService : AuthenticationService) { }

  ngOnInit() {
    this.deviceService.getDevices().then((res : devicesInterface) => {
      if(res){        
        let data : ResUpdateDevices
        data.devices = res;
        this.devices = res.devices;        

        data.token = this.authenticationService.getToken();

        this.deviceService.updateDevicesToServer(data).subscribe(res => {
          console.log(res)
        },err=>{
          console.log(err)
        });
      } 
    })
  }

  goto_device(ssid : String, name : String){
    this.router.navigate(['members','device',ssid,name])
  }

}

ResUpdateInterface 接口

export interface ResUpdateDevices{
    devices : devicesInterface
    token : string
}

设备接口接口

export interface deviceInterface {
  ssid : String,
  name : String
}

设备接口接口

export interface devicesInterface {
  devices : Array<deviceInterface>  
}

Console Logging res 给出了这个

{devices : [{ssid:"ssid", name :"name"}]}

您收到此错误是因为您在尝试分配data.devices = res;之前没有初始化data对象data.devices = res; . 我建议进行以下更新:

let data: ResUpdateDevices = {
    devices: res,
    token: this.authenticationService.getToken(),
};
this.devices = res.devices;
  相关解决方案