从父模板调用子组件时,如何从子模板中侦听事件?
我有2个组件:app.ts和child.ts;
app.ts:
@Component({
selector: 'app',
template: '<button>Main button</buton><router-outlet></router-outlet>',
encapsulation: ViewEncapsulation.None,
directives: [ROUTER_DIRECTIVES],
})
@RouteConfig([
{path: '/child/', component: ChildCmp, as: 'Child'}
])
export class AppCmp {
}
child.ts:
@Component({
selector: 'child',
template: 'This is child page!'
})
export class AppCmp {
// This method should be called, when mail button is pressed
onChange() {
}
}
我不想将click事件添加到按钮,而是想在子组件中为onChange函数添加某种侦听器,以便在单击父视图中的按钮时进行监听 . 我尝试过使用HostListener,但只有在将HostListener添加到父组件时才会触发 .
1 回答
我就是这样做的,但请注意,我正在摆脱路由,如果你确实需要以你的方式进行路由,你将不得不弄清楚如何做同样的事情,如果我要使用路由我会将父组件和子组件放在同一路径中,然后我可以执行类似下面的操作:
child.ts
简而言之,这可以通过从父级更新子级上的语言绑定来实现,并且每次在父级上更改语言绑定时,将调用子级语言的setter方法,因此您可以执行任何操作,例如运行onChanged方法 .