基於Angular 2的docs,您可以使用@Input很容易地將數據從一個組件傳遞到另一個組件。在這樣的子組件Angular 2 @Input:是否可以將數據從組件傳遞到另一個子路由組件?
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';
}
而得到的數據:
因此,例如,我可以設置父這樣
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;
}
所以是非常明顯的,通過[hero]="data"
到父組件的模板(當然在子選擇器中)並將它們處理到子組件中。
但這是問題所在。
我的子組件DOM元素(在此例中爲<hero-child>
)在父級模板中不可用,而是在<router-outlet>
元素中加載。
那麼我該如何將數據傳遞給子路由組件呢?輸入是不是正確的方式? 我想避免雙重,高音等調用來獲取我的父路由/組件中已有的相同數據。
我會使用模型驅動的表單和服務而不是模板 – cport1
我通過服務將數據傳遞給父級。 Isn;這是你的意思? –
@ cport1如何模型驅動的形式可以提供幫助,他想傳遞組件數據以將'HeroParentComponent'數據傳遞給位於'router-outlet'中的'HeroChildComponent'數據,好問題:) –