2016-04-11 30 views
6

Angular2'de bağlanma hakkında bir sorum var.Angular2 koşullu işleç kullanarak bağlama

@Component({ 
    selector: 'drawer-item', 
    templateUrl: '../res/views/drawer-item.html' 
}) 
export class DrawerItemComponent 
{ 
    @Input() text:string; 
    @Input() icon:string; 
    @Input() textClass:string; 
} 

<div class="drawer-item-text word-wrap {{textClass}}"> {{text}}</div> 
<i class="mdi mdi-{{icon}} drawer-item-img"></i> 

Ben bu gibi kullanmak:

<drawer-item (click)="selectCompany()" [text]="selectedCompanyLabel" [icon]="selectedCompanyIcon" [textClass]="selectedCompanyClass"></drawer-item> 

ben örneğin, değişken metni bağlayıcı ediyorum görebileceğiniz gibi

Ben basit bir bileşen yazdım, bu kodu selectedCompanyLabel ile. Bu sayede her şey harika çalışıyor ve eğer selectedCompanyLabel, tha etiketini de değiştiriyorsa.

ben gibi bir şey kullanarak o değişkeni önleyeceğini:

[text]="company ? 'company.name' : 'Select a company'" 

Ancak içerik binded değil bu yoldur. Yani şirket değiştiyse, etiket güncellenmez.

Ama bu stratejiyi bir stilde kullanırsam işe yarıyor! Örneğin bir şey harika çalışır:

<div class="company ? 'italic' : 'bold'"> ... </div> 

Neden olduğunu biliyor musunuz?

Çok teşekkürler

cevap

11

ben yerine aşağıdaki kullanır: company.name için

[text]="company ? company.name : 'Select a company'" 

yok tırnak. Problemin ne senin sorudan

2

Emin değilim ama bu size

[text]="company?.name" 
aradığınızı sanırım
İlgili konular