2016-04-14 22 views
7

Özellik alt öğesi öğesine erişilmesi gerekir. Veli:angular 2 access alt bileşeni tarafından sağlanan alt bileşen.

<div> 
    <shipment-detail #myCarousel ></shipment-detail> 
</div> 
@Component({ 
    selector: "testProject", 
    templateUrl: "app/partials/Main.html", 
    directives: [ShipmentDetail] }) 
class AppComponent { 
    getChildrenProperty() { 
    // I want to get access to "shipment" 
    } 
} 

Çocuklar:

@Component({ 
    selector: "shipment-detail", 
}) 
export class ShipmentDetail { 
    shipment: Shipment; 
} 

cevap

15

Component Interaction cookbook bakınız. Bu yüzden @ViewChild() öğesini kullanın ve ebeveynin gönderi değerini almak için arayabileceği ShipmentDetail'e bir yöntem ekleyin veya aşağıda gösterildiği gibi doğrudan mülke erişin (çünkü tembeltim ve bir API yazmak istemedim) yöntemi): çözüm için

@Component({ 
    selector: "testProject", 
    templateUrl: "app/partials/Main.html", 
    directives: [ShipmentDetail] 
}) 
export class AppComponent { 
    @ViewChild(ShipmentDetail) shipmentDetail:ShipmentDetail; 
    ngAfterViewInit() { 
     this.getChildProperty(); 
    } 
    getChildProperty() { 
    console.log(this.shipmentDetail.shipment); 
    } 
} 

Plunker

+0

Büyük, teşekkürler ... ben içeride özelliği erişme ... bunu karşılaştığı olarak benim gibi yeni başlayanlar) için bir ipucu ('o verecektir constructor' Bir çalışma zamanı hatası, yani 'ngAfterViewInit()' rastgele bir seçim değildir. –

+1

RC6 yönergelerinde kullanımdan kaldırılmıştır, bu yüzden yalnızca yönergeleri kaldırmanız yeterlidir: [ShipmentDetails] –

+2

Bu hafta içinde nasıl yapılabileceği ilginç bir soru var gibi görünüyor. – peterh

İlgili konular