2017-08-15 4 views
-1

Komponente:Angular 2 kann nicht lesen Eigentum von Nicht definiert (Funktionsname)

import { Component, OnInit } from '@angular/core'; 
import { HttpClient } from '@angular/common/http'; 

@Component({ 
    selector: 'app-ore-table', 
    templateUrl: './ore-table.component.html', 
    styleUrls: ['./ore-table.component.less'] 
}) 
export class OreTableComponent implements OnInit { 
    ores = '../assets/json/ores.json'; 
    prices = 'https://esi.tech.ccp.is/latest/markets/prices/?datasource=tranquility'; 

    oreArray: any; 
    pricesArray: any; 
    joinedArray: any; 

    constructor(private http: HttpClient) { } 

    getOres() { 
    this.http.get(this.ores).subscribe(data => { 
     this.oreArray = data; 
     this.getPrices(); 
    }); 
    } 

    getPrices() { 
    this.http.get(this.prices).subscribe(data => { 
     this.pricesArray = data; 
     this.joinPrices(); 
    }); 
    } 

    joinPrices() { 
    this.oreArray.forEach(function(data) { 
     const matchingPrice = this.getMatchingPrice(data); 
    }); 
    } 

    getMatchingPrice(data) { 
    for (let i = 0; i < this.pricesArray.length; i++) { 
     if (this.pricesArray[i].type_id === data.id) { 
      return this.pricesArray[i]; 
     } 
    } 
    return false; 
    } 

    ngOnInit() { 
    this.getOres(); 
    } 
} 

nicht sicher, was hier vor sich geht. Ich Übertragung dieser Arbeits Code von Vanille JS zu Angular 2/Typoskript und diesen Fehler bei dem Versuch, die oben auszuführen:

Cannot read property 'getMatchingPrice' of undefined 

Der Fehler in dieser Zeile auftritt:

const matchingPrice = this.getMatchingPrice(data); 

Einsicht wird geschätzt. Vielen Dank.

+2

Verwenden Sie den Pfeil-Syntax statt 'function'. Sie können mehr über dieses Thema in dem Link erfahren. – echonax

Antwort

2

Versuchen Sie stattdessen:

joinPrices() { 
     this.oreArray.forEach((data) => { 
     const matchingPrice = this.getMatchingPrice(data); 
     }); 
    } 
Verwandte Themen