2016-04-24 4 views
0

Ich möchte eine Liste von Elementen anzeigen, die ich über den Google Geocoder in Angular 2 (speziell Ionic 2) mit * ngFor erhalten habe.Angular 2 - Fehler beim Drücken auf Array zur Anzeige mit * ngFor

adress modal.html

<ion-content class="address-modal"> 
    <ion-searchbar id="pac" [(ngModel)]="searchQuery" (input)="getItems($event)"></ion-searchbar> 
    <ion-list> 
    <ion-item *ngFor="#address of addresses"> 
     {{ address }} 
    </ion-item> 
    </ion-list> 
</ion-content> 

adress modal.ts

import {Page, NavController, ViewController} from 'ionic-angular'; 
import {ViewChild} from 'angular2/core'; 

declare var google: any; 


@Page({ 
    templateUrl: 'build/pages/address-modal/address-modal.html', 
}) 
export class AddressModal { 

    searchQuery: string = ''; 
    geocoder: any; 
    addresses: any = []; 

    constructor(public nav: NavController, public view: ViewController) { 
    this.geocoder = new google.maps.Geocoder(); 
    } 

    getItems(searchbar) { 

    this.geocoder.geocode({ 'address': searchbar.value }, function (results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     console.log('len ' + results.length); 
     console.log(results); 

     for(var i = 0; i < results.length; i++) { 
      this.addresses.push(results.formatted_address); 
     } 

     } else { 
     console.error("Geocode was not successful for the following reason: " + status); 
     } 
    }); 
    } 

der Geocodierer kehrt erfolgreich eine Liste mit den Ergebnissen, die ich in der Konsole anzuzeigen, Chrome aber sofort blockiert Ausführung und zeigt die folgende Fehlermeldung:

address-modal.ts:45 Uncaught TypeError: Cannot read property 'addresses' of undefined

die

this.addresses.push(results.formatted_address);

die Linie Punkte würde ich die Liste des formatted_addresses in meiner * ngFor Block auf meiner Vorlage angezeigt werden mag. (Ich möchte nicht Googles Autocomplete searchbox verwenden)

Antwort

Verwandte Themen