2016-04-14 14 views
7

Sie müssen auf Eigenschaft Kinder Element zugreifen. Parent:eckig 2 Zugriff untergeordnete Komponente Eigenschaft von übergeordnete Komponente

<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" 
    } 
} 

Kinder:

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

Antwort

15

die Component Interaction cookbook See. Verwenden Sie also @ViewChild() und fügen Sie eine Methode zu ShipmentDetail hinzu, die der Eltern anrufen kann, um den Versandwert abzurufen, oder greifen Sie direkt auf die Eigenschaft zu, wie ich unten zeige (weil ich faul war und keine API schreiben wollte/Methode):

@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

Große, Danke für die Lösung ... wie ich eine Spitze (für Anfänger), wie ich es konfrontiert ... in der Eigenschaft Zugriff auf 'constructor' es geben ein Laufzeitfehler, also 'ngAfterViewInit()' ist keine zufällige Wahl. –

+1

In RC6-Direktiven ist veraltet, so dass Sie nur Anweisungen entfernen müssen: [ShipmentDetails] –

+2

Es scheint, es gibt eine interessante Frage, wie könnte es in dieser Woche getan werden. – peterh

Verwandte Themen