我有两个这样的组件:
@Component({
selector: 'comp1',
template: `<h1>{{ custom_text }}</h2>`
})
export class Comp1 {
custom_text:string;
constructor(text:string) {
this.custom_text = text;
}
}
/*********************************************/
@Component({
selector: 'comp2',
directives: [Comp1],
template: `
<b>Comp 2</b>
<comp1></comp1>
`
})
export class Comp2 {
constructor() {
// ...
// How to send my own text to comp1 from comp2
// ...
}
}
是否可以将我自己的文字从comp1
发送到comp2
?
是否可以从comp1
获取comp2
个实例?
感谢。
答案 0 :(得分:5)
comp2是comp1的父级,所以
@Output() someEvent = newEventEmitter();
emit()
上面有一个事件: this.someEvent.emit('some text');
<comp2 (someEvent)="someHandler()"></comp2>
@ViewChild
或@Query
:@ViewChild(Comp1) viewChild:comp1;
然后您可以访问{{1在this.comp1
中,或稍后在组件的生命周期中。答案 1 :(得分:1)
是的,很容易实现这一点,
查看教程:MULTIPLE COMPONENTS Angular2教程的第3部分,了解如何发送输入。
@Component({
selector: 'comp1',
template: `<h1>{{customText}}</h2>`,
inputs: ['customText']
})
export class Comp1 {
public customText:string;
constructor(text:string) {
this.customText= text;
}
// ngOnChange to make sure the component is in sync with inputs changes in parent
ngOnChanges() {
this.customText= text;
}
}
/*********************************************/
@Component({
selector: 'comp2',
directives: [Comp1],
template: `
<b>Comp 2</b>
<comp1 customText = "My Custom Test"></comp1>
`
})
export class Comp2 {
constructor() {
}
}
尝试一下,让我知道它是怎么回事。