Ошибка при попытке добавить значения в переменную массива классов в Angular 5 - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь создать новый объект и поместить его в массив.Это работает, когда я использую локальный массив localArr, объявленный в методе, но вижу ERROR TypeError: Cannot read property 'blobList' of undefined при использовании переменной класса blobList: Azureblob[] = [];.

enter image description here

 import { Azureblob } from '../models/azureblob';

 export class BlobService {

   blobList: Azureblob[] = [];

   getAllBlobsJS(): Azureblob[] {
      //var localArr = new Array;

      this.blobServiceObj = AzureStorageBlobServiceJS.createBlobService(this.connectionString);

      this.blobServiceObj.listBlobsSegmented('acsazurecontainer', null, function (error, results) {
        if (error) {
          //console.log("**** Error");
        } else {
          for (var i = 0, blob; blob = results.entries[i]; i++) {
            //console.log("**** Success", blob);
            //localArr.push(blob.name);
            this.blobList.push(new Azureblob(blob.name));
        }
     }
     //console.log("**** localArr - Number of blobs returned=", localArr.length);
     console.log("**** Class Arr - blobList length=", this.blobList.length);
     return this.blobList;
   });
}

1 Ответ

0 голосов
/ 24 октября 2018

Ссылайтесь на ваш массив из локальной переменной, затем используйте его:

var localArr = this.blobList;
[...]
localArr.push(blob.name);

Поскольку this в вашей анонимной функции не ссылается на экземпляр вашего класса.Это относится к объекту, который вызывается функцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...