我有hierarhy中的组件:app.component> intro.component> header.component。我想在header.component中使用,该方法在app.component中定义。我认识到用@viewChild制作它的方法。什么最简单的方法让它发挥作用?
//编辑 我想在header.component.html中的html标记上执行(单击)事件。在这个函数中,我想从app.component运行方法。
答案 0 :(得分:1)
您还可以将回调函数作为@input(React样式)传递给子组件:
//app.component.html:
<app-intro [appMethod] = "boundMethod"></app-intro>
export class AppComponent {
ngOnInit() {
this.boundMethod = this.appMethod.bind(this);
}
appMethod() {
console.log("appMethod called");
}
}
//intro.component:
<app-header [appMethod] = "appMethod"></app-header>
export class IntroComponent {
@Input() public appMethod: Function;
}
//header.component:
export class HeaderComponent {
@Input() appMethod: Function;
ngOnInit() {
appMethod(); // Call parent method
}
}
&#13;
答案 1 :(得分:0)
一个可能的例子:
在app.component.html的html中:
...<app-intro></app-intro>
intro.compoennt.html中的html:
...<app-header #header></app-header>
并在app.component.ts中:
@ContentChild("header")
public headerComponent: HeaderComponent;