2016-04-14 8 views
7

Potrzebujesz dostępu do elementu dzieci własności. nadrzędny:kątowa właściwość elementu potomnego 2 dostęp z elementu nadrzędnego

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

Dzieci:

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

Odpowiedz

15

Zobacz Component Interaction cookbook. Tak więc użyj @ViewChild() i dodaj metodę do ShipmentDetail, którą rodzic może wywołać, aby pobrać wartość przesyłki, lub po prostu przejdź bezpośrednio do właściwości, jak pokazałem poniżej (ponieważ byłem leniwy i nie chciałem pisać API/metoda):

@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

Wielki, dzięki za rozwiązanie ... jeden wierzchołek (dla początkujących jak ja) jak wychodził to ... dostęp do właściwości wewnątrz 'constructor' da błąd środowiska wykonawczego, więc 'ngAfterViewInit()' nie jest wyborem losowym. –

+1

W dyrektywach RC6 jest przestarzała, więc wystarczy usunąć dyrektywy: [Szczegóły przesyłki] –

+2

Wydaje się, że istnieje interesujące pytanie, jak można to zrobić w tym tygodniu. – peterh

Powiązane problemy