2016-04-26 15 views
0

Beim Versuch, Daten an eine untergeordnete Komponente zu übergeben, kann ich die Eigenschaft an die Vorlage anhängen, kann jedoch nicht auf die ID innerhalb der Klasse der Komponente zugreifen. Irgendwelche Ideen?Weitergabe von Daten an die Komponente angular2

--- --- ELTERN

<related-products [id]="product.id"></related-products> 

--CHILD ---

import {Component, OnInit, Input} from 'angular2/core'; 
import {RouteParams, Router} from 'angular2/router'; 
import {ProductService} from '../products/product.service.js'; 

@Component({ 
    selector: 'related-products', 
    templateUrl: "wp-content/themes/f2/app/views/directives/related-products-template.html", 
    inputs: ['id'], 
    providers: [ProductService] 
}) 
export class RelatedProductsComponent implements OnInit { 

    products: any[]; 
    errorMessage: string; 
    id: number; 

    constructor(
    private _service: ProductService, 
    private _router: Router, 
    private _routeParams: RouteParams 
) {} 

    ngOnInit() { 

    console.log(this.id); 
    } 

} 

Antwort

1

Sie könnten versuchen, @Input für die id Eigenschaft zu verwenden:

export class RelatedProductsComponent implements OnInit { 
    products: any[]; 
    errorMessage: string; 
    @Input() // <------------ 
    id: number; 

    (...) 
} 

aber Es sollte mit dem Attribut inputs arbeiten und Sie sollten Zugriff auf den Wert in der haben ngOnInit Haken Methode. Sind Sie sicher, dass der angegebene Ausdruck product.id etwas Definiertes zurückgibt?

Siehe diese Plunkr: https://plnkr.co/edit/aG4TdHbAls3cu04AAt64?p=preview.

+0

Ich denke es ist die Tatsache, dass ich einen Ajax-Aufruf mache, um die Daten zu bekommen, und das bedeutet, dass die Daten noch nicht in der Kind-Komponente bereit sind. Wie warte ich auf die Kind-Komponente gebaut werden, so dass ich weiß, dass die Daten verfügbar sind – user3355603

+0

Sie erhalten das Produkt direkt oder es ist ein Element innerhalb einer Schleife? –

+0

Es ist die einzelne Detailseite, also mache ich den Anruf und bekomme die Daten und ich habe die Kindkomponente (verwandte Produkte (die die ID von der Elternkomponente benötigt) (Product Detail) – user3355603

Verwandte Themen