Angular 2 子组件接收祖先事件
Angular 2 child component receive ancestor event
我有一个 Angular 组件,它依赖于根应用程序组件上发生的单击事件。孩子位于<app>
组件内的随机位置,因此我没有列出它。
@Component({
template: '<div>Child!</div>'
})
export class Child {
constructor () {}
}
@Component({
selector: 'app',
template: '<div (click)=foo()></div>'
})
export class App {
rootClickEmitter = new EventEmitter();
foo () {
this.rootClickEmitter.emit('bar');
}
}
如何让子组件接收 rootClickEmitter
事件?
对于"点击外部",请尝试以下操作:
@Component({
selector: 'child',
template: '<div (click)="childClick($event)">child content here</div>',
host: { '(document:click)': 'docClick()' }
})
export class Child {
docClick() {
console.log('clicked outside');
}
childClick(ev) {
console.log('child click');
ev.stopPropagation();
}
}
普伦克
更新:埃里克刚刚在另一个答案中发布了以下内容:
"您可以使用listenGlobal,它将使您能够访问文档,正文等。
renderer.listenGlobal('document', 'click', () => {
console.log('Document clicked');
});
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- 如何将事件stopPropagation限制为祖先元素
- 在事件冒泡阶段删除祖先
- Angular 2 子组件接收祖先事件
- 检查事件目标是否有特定的祖先
- 在JavaScript中,如果在HTML元素及其祖先上声明了事件触发器,则首先触发