首页 > 解决方案 > 尝试访问数组时未定义数组

问题描述

我在打字稿中有一个服务类,在该类中我声明了一个公共的字符串数组,但是当我尝试推入该数组时,它会引发未定义的异常。我在这里做错了什么?

无法读取未定义的属性“audioInput”

该类的源代码是:

export class AudioService {
    public audioInput:Array<String>=[];
    _navigator=<any> navigator;
    constructor(){
    }
    getDevices(){
        this._navigator.mediaDevices.enumerateDevices().then(this.gotDevices)
    }
    gotDevices(deviceInfos) : any {
      for (let i = 0; i !== deviceInfos.length; ++i) {
        const deviceInfo = deviceInfos[i];
        let value = deviceInfo.deviceId;
        if (deviceInfo.kind === 'audioinput') {
          this.audioInput.push(deviceInfo.label);
        }
      }
    }
}

标签: angulartypescript

解决方案


如果您在科尔多瓦内部访问“这个”。它指的是窗口对象。你需要定义 let me = this;

export class AudioService {
    public audioInput:Array<String>=[];
    _navigator=<any> navigator;
    constructor(){
    }
    getDevices(){
        this._navigator.mediaDevices.enumerateDevices().then(this.gotDevices)
    }
    gotDevices(deviceInfos) : any {
      let me = this.
      for (let i = 0; i !== deviceInfos.length; ++i) {
        const deviceInfo = deviceInfos[i];
        let value = deviceInfo.deviceId;
        if (deviceInfo.kind === 'audioinput') {
          me.audioInput.push(deviceInfo.label);
        }
      }
    }
}

推荐阅读