2016-03-25 21 views
0

Nesneler iç içe dizilerden oluşuyorsa, karmaşık nesneleri alt bileşenlere aktarmak için daha iyi bir çözüm var mı?Köşeli 2: İç İçe Geçiş Dizilerini Geçecek Bileşen Girdisini Kullanma

İşte benim konu: {{animal.quadripeds[2].dogs[4].furColor}}

endeks değerleri kodlanmış şunlardır: çocuk bileşeninde görünen kısmi html, böyle iç içe diziler temsil etmek gerekecek. Bu örneğin, böyle görmek güzel olurdu: Nested Arrays via Component Input

Teşekkür: animal.quadripeds.find(q => q.isDirty == true).dogs.find(d => d.isDirty == true).furColor. Maalesef olarak) (.find kullanamaz {{}}

İşte keyfi için plnkr var !

+0

Bu aramayı denetleyiciye delege etmek mi istiyorsunuz? Zaten şablonda yapmak çok kolay değil. – dfsq

+0

@dfsq yerine bir hizmete devretme iş mantığı için değil – glcheetham

cevap

0

Sen şablonda find yöntemi kullanamazsınız, ancak bu örneğin, bileşende kullanamazsınız anlamına gelmez:

import {Input, Component, OnInit} from 'angular2/core'; 

@Component(...) 
export class ChildComponent implements OnInit { 
    @Input() transport: Transport; 

    private _valueToDisplay; 

    ngOnInit() { 
     this._valueToDisplay = animal.quadripeds 
      .find(q => q.isDirty == true) 
      .dogs.find(d => d.isDirty == true) 
      .furColor; 
    } 

    get valueToDisplay() { 
     return this._valueToDisplay; 
    } 
} 

İki şey:

  • Not: OnInit arabirimini kullandığımı unutmayın: bunun nedeni, giriş öğenizin yapıcınızda henüz başlatılmayacağıdır (bu nedenle, ngOnInit işlevinde başlatma mantığınızı uygulamaya dikkat edin).
  • Girdi özelliğiniz güncellendiğinde aynı mantığı kullanmanız gerekiyorsa, ngOnChanges işlevini uygulayabilirsiniz (veya giriş özelliğiniz için bir ayarlayıcıyı kullanabilirsiniz). @dfsq tarafından önerildiği gibi, bu mantık muhtemelen hizmetinde gitmeli http://plnkr.co/edit/BTzAfO6AGSLnOn8S1l24

    Not:

İşte güncellenmiş plunkr olduğunu.

+0

Mickael, ngOnChanges ipucu için teşekkürler! Sizin için muhtemelen uygulamada daha fazla esneklik var. Bir güncelleme senaryosunda denemedim, ancak başlangıçta çocuk bileşeninin görünümünü oluşturduğunuzda çalışır. – LargeDachshund

İlgili konular