如何在 Angular 中检测组件 外部 的点击?
原文由 AMagyar 发布,翻译遵循 CC BY-SA 4.0 许可协议
让所有的父母
var paths = event['path'] as Array<any>;
检查是否有任何父组件是组件
var inComponent = false;
paths.forEach(path => {
if (path.tagName != undefined) {
var tagName = path.tagName.toString().toLowerCase();
if (tagName == 'app-component')
inComponent = true;
}
});
如果您将组件作为父组件,请在组件内部单击
if (inComponent) {
console.log('clicked inside');
}else{
console.log('clicked outside');
}
@HostListener('document:click', ['$event'])
clickout(event: PointerEvent) {
var paths = event['path'] as Array<any>;
var inComponent = false;
paths.forEach(path => {
if (path.tagName != undefined) {
var tagName = path.tagName.toString().toLowerCase();
if (tagName == 'app-component')
inComponent = true;
}
});
if (inComponent) {
console.log('clicked inside');
}else{
console.log('clicked outside');
}
}
原文由 Wictor Chaves 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答2.2k 阅读
3 回答2.1k 阅读
2 回答967 阅读✓ 已解决
4 回答922 阅读
2.6k 阅读
1 回答1.4k 阅读
2 回答789 阅读
一个工作示例 - 点击这里