Basierend auf der docs von Angular 2 können Sie Daten mit dem @Input ganz einfach von einer Komponente zu einer anderen übertragen.Angular 2 @Input: Können Daten von einer Komponente an eine andere untergeordnete Routenkomponente übergeben werden?
So zum Beispiel kann ich die Eltern wie folgt festgelegt:
import { Component } from '@angular/core';
import { HEROES } from './hero';
@Component({
selector: 'hero-parent',
template: `
<h2>{{master}} controls {{heroes.length}} heroes</h2>
<hero-child *ngFor="let hero of heroes"
[hero]="hero"
[master]="master">
</hero-child>
`
})
export class HeroParentComponent {
heroes = HEROES;
master: string = 'Master';
}
Und die die Daten in der untergeordneten Komponente wie diese:
import { Component, Input } from '@angular/core';
import { Hero } from './hero';
@Component({
selector: 'hero-child',
template: `
<h3>{{hero.name}} says:</h3>
<p>I, {{hero.name}}, am at your service, {{masterName}}.</p>
`
})
export class HeroChildComponent {
@Input() hero: Hero;
@Input('master') masterName: string;
}
So ist es ganz offensichtlich, die [hero]="data"
passieren zu die Vorlage der Elternkomponente (natürlich in der Kindselektor) und behandeln sie in die Kindkomponente.
Aber hier ist das Problem.
Mein Kind Komponente DOM-Element (in diesem Fall <hero-child>
) ist in der Eltern-Vorlage nicht verfügbar, sondern wird geladen dort in einem <router-outlet>
Elemente.
Wie kann ich dann Daten an eine untergeordnete Route Komponente dann? Ist die Eingabe nicht der richtige Weg? Ich möchte doppelte, hohe usw. Anrufe vermeiden, um dieselben Daten zu erhalten, die bereits in meiner Elternroute/Komponente vorhanden sind.
Ich würde ein modellgesteuertes Formular und einen Dienst anstelle der Vorlage verwenden – cport1
Ich bekomme die Daten bereits über einen Dienst an die Eltern. Isn t das was du meinst? –
@ cport1 wie modellgetriebene Form könnte helfen, er wollte Komponentendaten weitergeben, um 'HeroParentComponent' Daten an' HeroChildComponent' Daten zu übergeben, die in 'Router-outlet' liegen, Gute Frage :) –