2016-07-30 12 views
0

Ich versuche, verschiedene Werte von einem Json durch Interpolation zu rendern, aber aus irgendeinem Grund funktioniert es nur innerhalb einer Iteration.Angular 2-Interpolation

Zum Beispiel:

<ul> 
    <li *ngFor="let object of objects"> 
     {{object.title}} {{object.text}} 
    </li> 
</ul> 

Dies funktioniert.

Aber immer, wenn ich ohne einen bestimmten Wert zugreifen möchten Iterieren es nicht funktioniert:

{{objects[0].title}} {{objects[0].text}} 

immer diese Fehlermeldung: ORIGINAL AUSNAHME: Typeerror: kann nicht lesen Eigenschaft ‚0‘ undefinierter

Beliebig Idee, warum das passiert?

Danke!

+0

können Sie uns Ihre Komponente zeigen Code? – micronyks

Antwort

0

Ich bin bereit zu wetten, dass Sie zunächst keinen Wert für objects setzen. Ihr Code sieht wahrscheinlich so aus.

@Component({ 
... 
}) 
class MyComponent { 
    objects; 
    ngOnInit() { 
     someHttpRequest().then((res) => objects = res); 
    } 
} 

Angular werden versuchen objects, sobald die Bauteilbelastungen zu interpolieren, und da Sie keine Objekte einen Wert bis zu geben danach objects[0] ist in der Tat nicht definiert.

Sie können dieses Problem beheben, in ein paar Möglichkeiten - wahrscheinlich die einfachste einfach alle object[0] Referenzen in einer *ngIf

<div *ngIf="objects && objects.length > 0"> 
    {{objects[0].foo}} 
</div> 
+0

Ja, ich dachte, das Problem wäre so etwas, wissend, dass die JSON-Antwort von einer externen API kommt. Aber das korrekte Rendering mit Iteration war sehr fehlleitend ... Ich verstehe immer noch nicht, wie das funktioniert. Wenn das Objekt nicht definiert ist, sollte es innerhalb der Iteration ebenfalls undefiniert sein ... Wie auch immer, danke, es hat super geklappt! – cerealex

0

Einfache Antwort wäre zu wickeln ist,

{{Objects[0]?.title}} {{objects[0]?.text}}