带有 clipPath 的 div 的单击事件在 angular.js 中不起作用

Posted

技术标签:

【中文标题】带有 clipPath 的 div 的单击事件在 angular.js 中不起作用【英文标题】:click event for a div with clipPath doesn't work in angular.js 【发布时间】:2020-04-22 21:37:21 【问题描述】:

我这里有一些问题。我有一个边界上有一个 SVG 的 div。我想向 div 添加一个点击事件,但 SVG 不允许点击事件在 div 上工作。 这是组件的模板:

<div class="input-container dash-bordered clipped-left-borders">
    <div class="input-filed no-icon-field">
        <span class="icon-plane-left-down input-icon-font"></span>
        <input type="text" class="input" placeholder="something" (click)="toggleDestinationDropDown(true)" />
    </div>
</div>

<svg id="clipSvg" viewBox="0 0 500 0">
    <defs>
        <clipPath id="clipLeft" clipPathUnits="objectBoundingBox" transform="scale(0.002 0.01)">
            <path d="M-20 0 A3 2, 0, 0 0, 20 0 L20 100 A3 2, 0, 0 0, -20 100 L0 20" fill="royalblue" stroke="black" />
            <rect x="20" y="0"   />
        </clipPath>

        <clipPath id="clipRight" clipPathUnits="objectBoundingBox" transform="scale(0.002 0.01)">
            <path d="M520 0 A3 2, 0, 0 1, 480 0 L480 100 A3 2, 0, 0 1, 520 100 L500 20" fill="royalblue"
                stroke="black" />
            <rect x="0" y="0"   />
        </clipPath>
    </defs>
</svg>

这是css:

.clipped-left-borders 
  clip-path: url(#clipLeft);



#clipSvg 
  width: 0px;
  height: 0px;
  pointer-events: none;

我该如何解决这个问题???

【问题讨论】:

您使用的是哪个角度版本?你用的是 angularjs 还是 angular +2? CSS 在哪里,因为它需要与 clipLeft 元素在同一个文件中。 CSS 在 search.component.scss 文件中,html 在 search.component.html 文件中。 【参考方案1】:

angularjs 使用 ng-click 指令而不是 (click) ,后者是 angular +2 版本的语法。

所以在您的 HTML 中将 (click)="toggleDestinationDropDown(true)" 替换为 ng-click="toggleDestinationDropDown(true)"

【讨论】:

以上是关于带有 clipPath 的 div 的单击事件在 angular.js 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 Blazor 上单击 div 或元素外部以将其关闭的事件

jquery停止子触发父事件

jQuery在拖动时使用右键单击旋转div

将 clipPath 应用到带有变换的 Image 元素时出现问题

给div添加单击事件,如何传递一个参数,比如数字?在事件函数中获取到div对象也行

Fabric JS clipPath:裁剪后如何使图像适合画布?