2016-04-12 16 views
1

Angular 2'ye yeni geliyorum ve ifadeler hakkında ciddi bir sorum var. Şablonuma {{2 + 2}} gibi basit bir ifade koyduğumda işe yarıyor. Ekranımda görüntülenen "4" rakamını görüyorum. Ama ne zaman bir ifadede daha karmaşık bir şey yapmaya çalışırsam başarısız olur. "Sen arıyoruz:"Açısal 2: İfadedeki filtrelere veya nitelik özelliklerine erişemiyor

import {Component} from 'angular2/core'; 

@Component({ 
    selector: 'timos-app', 
    template: ` 
    <form> 
     <input type='text' [(ngModel)]='pizza'> 
     <p> 
     You are looking for: {{ pizza.length }} 
    </p> 
    </form> 
    ` 
}) 
export class PizzaApp { 
} 

Yani, metni görüntülemek istediğiniz ve sonra uzunluk giriş kutusunda yazılı sözcüğün . Ama "Sen arıyorsun:" bile göstermiyor. Sadece "pizza.length" i "pizza" olarak değiştirdiğimde kutuya yazdığım kelimeyi gösterir.

Umarım soruma cevap verebilirsiniz, Teşekkür ederiz!

Soru işareti operatörüyle birlikte, çözümler çalışır. Ama şimdi başka bir problemim var. Boruları ifadelerde kullanamıyorum. Resmi Angular-web sitesinden basit bir örnek kopyaladım, ama işe yaramıyor. Çalıştırdığımda ekran boş. pizza başında tanımlanmamış için

import {Component} from 'angular2/core'; 
@Component({ 
    selector: 'timos-app', 
    template: `<div> 
    <p>A: {{a | currency:'USD':false}}</p> 
    <p>B: {{b | currency:'USD':true:'4.2-2'}}</p> 
</div>` 
}) 
export class PizzaApp { 
    a: number = 0.259; 
    b: number = 1.3495; 
} 
+0

{{pizza? .length}} ifadesini deneyin. Veya bileşenin içinde pizzayı perişan hale getirin. – Chandermani

+0

Teşekkür ederim, soru işareti ile çalışır. Nedenini söyler misin? Bunu bir öğreticide hiç görmedim. – Timo

+0

, pizza alanını boş dize ile başlatmak için en basit yol olurdu. – kemsky

cevap

1

: (?.)

Eğik Elvis operatörü - belki daha iyi "güvenli navigasyon operatörü" olarak tarif - boş ve tanımsız karşı korumak için akıcı ve kolay bir yoludur özellik yollarındaki değerler.

Yani, sadece varken:

<p> 
     You are looking for: {{ pizza.length }} 
</p> 

JS null başvuru hatası atar (böylece Açısal yapar). (Pizza henüz başlatılmadı beri, uzunluk olmadan):

<p> 
      You are looking for: {{ pizza?.length }} 
    </p> 

görünümünüzü iyi görüntüleniyor ve görüntüleme: (?) Elvis operatörü kullanma Sen arıyoruz.

+0

Borular benim için çalışıyor. Gördüğüm gibi selektör isminiz var: seçici: 'timos-app', onu app-app uygulamasına, ve AppAponent'e de PizzaApp olarak değiştirin. Ancak, bileşenler arasındaki çocuk-ebeveyn ilişkisini anlamanız sizin için iyi olur. –