如何使用Angular侦听SVG path
或g
元素上的单击事件?
In this demo如果(click)
事件绑定被添加到svg
元素,click()
事件处理器将触发。我们如何让它对path
或g
svg元素起作用?
最终目标是在用户单击class
时将其添加到path
。
如何使用Angular侦听SVG path
或g
元素上的单击事件?
In this demo如果(click)
事件绑定被添加到svg
元素,click()
事件处理器将触发。我们如何让它对path
或g
svg元素起作用?
最终目标是在用户单击class
时将其添加到path
。
1条答案
按热度按时间dly7yett1#
OP的演示展示了一个使用Angular监听SVG元素上的click事件的正确示例。为了简化一点,
main.html
文件可以如下所示:我还将从StackBlitz复制OP的
main.ts
代码,以便其他人将来可以测试它:上面的方法将适用于
e.target
指向正确的路径元素。“元素的填充区域不可点击”的真正原因是别的。因为没有填充(由于CSS属性
fill:none
),默认情况下你只能点击笔划。当笔划很细时,很难点击元素。如果你不需要支持旧的浏览器,解决方案是在path元素中添加一个css属性
pointer-events: all
(关于这个属性的更多信息,请参见https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events)。要支持旧版浏览器,您可以使用
fill: rgba(0,0,0,0)
或fill: transparent
,或者任何带有fill-opacity: 0
的填充颜色。不过,这会降低性能,因为浏览器可能会尝试在这些区域的背景上绘制“透明色”(虽然不绘制背景的结果是完全相同的,就像乘以1再加上0一样)