2016-04-12 10 views
4

Ich bin auf Angular 2 ab Angular 1 kommen, und ich kann nicht verstehen, wie ngFor Attribut auf einem Objekt zu verwenden. this.myVar wird nach dem Ergebnis einer HTTP-Anforderung definiert, die das attr-Attribut definiert.* ngFor Objekt-Attribut nicht definiert

Hier ist mein Code:

# my_page.ts 
import {Page} from 'ionic-angular'; 
import {MyService} from '../../services/my_service'; 

@Page({ 
    templateUrl: 'build/pages/my_page/my_page.html', 
    providers: [MyService] 
}) 


export class MyPage { 
    public myVar; 

    constructor(private myService: MyService) { 
    this.myService.fetch().subscribe(
     data => this.myVar = data 
    ); 
    } 
} 

# my_page.html 
<div *ngFor="#item of myVar.attr"> 
</div> 

Und das ist der Fehler:

EXCEPTION: TypeError: Cannot read property 'attr' of undefined in [myVar.attr in ...]

Thank you!

Antwort

11

Da ajax zunächst bebauen wird abgeschlossen myVar einen beliebigen Wert hat nicht darin & während die Expression von ngFor Auswertung, es attr Eigenschaft undefiniert Objekt zuzugreifen versucht. Verwenden Sie [Elvis operator] [1], durch ? hat, wird es zu prüfen, ob Objekt definiert, wenn es dann nur es attr Eigenschaft aus es dann definiert ist, bewerten.

<div *ngFor="let item of myVar?.attr"></div> 
+0

Danke, das ist genau das, was ich gesucht habe! Weißt du, ob es möglich ist, so etwas für eine Array-Position zu verwenden? Wie 'myVar? [0]' – akz92

+0

@ akz92 können Sie das tun .. aber warum wollten Sie es tun. wie Sie jedes Element der Sammlung Fang von 'ngFor' –

+0

Ich bin nur neugierig :) Ich habe noch nie von diesem Betreiber vor – akz92