2017-09-16 1 views
2

Je reçois une erreur dans l'appel de fonction ci-dessous en disant que this.albumDetails n'est pas défini pour une ligne spécifique même si tous les autres appels fonctionnent correctement.Angular 2 _this is undefined

l'erreur est la suivante: TypeError: _this.albumDetails est non défini

L'erreur se produit probablement à this.albumDetails.concat (articles) où les éléments est un tableau d'objets JSON

Toute aide est appréciée grâce.

export class AppComponent { 
 
albums: any[]; 
 
albumDetails: any[]; 
 
searchAlbum(input: any){ 
 
    this.show = true; 
 
    this.searchService.getAlbum(input).subscribe(data => { 
 
     this.albums = data; 
 
     for(var i = 0; i < 50; i++){ 
 
     this.searchService.getDetails(this.albums[i].artist, this.albums[i].name, this.albums[i].mbid).subscribe(items => { 
 
      this.albumDetails = this.albumDetails.concat(items); //Error occuring here at this.albumDetails.concat(items) 
 
      console.log(this.albumDetails); 
 
     }); 
 
     } 
 
    }); 
 
    } 
 
}

+1

Où initialisez-vous 'this.albumDetails'? – echonax

+0

En dehors de la fonction dans la classe que searchAlbum est définie –

Répondre

3

Initialiser la albumDetails chaîne vide

albumDetails : string =' ' 

Vous pouvez également utiliser la syntaxe ES5 pour la concaténation de chaîne comme

this.albumDetails = `${this.albumDetails}${items}`; 

En utilisant backtick

` ` 

Reference Stackoverflow Post

Mise à jour 1: Comme par commentaire

Il semble que albumDetails est un tableau, si un tableau doit être initialisé avant de pousser les éléments, il faut donc ajouter la ligne suivante de la pour la boucle

this.albumDetails = []; 

ou lors de la déclaration d'une variable

albumDetails = []; 
+0

Merde peut-être que j'utilise la mauvaise fonction ici, j'essaie de pousser un tableau d'un appel json à albumDetails afin que j'ai un tableau de tableaux. Je devrais probablement utiliser .push ici au lieu de .concat, mais je reçois toujours l'erreur indéfinie –

+0

'albumDetails' est un tableau ou une chaîne ?? pouvez-vous ajouter le message complet – Aravind

+0

désolé je supposais qu'il serait clair qu'un tableau était déjà initialisé, j'ai mis à jour le code dans la question. –