angular - 区分 cdkDrag 并点击 angular

标签 angular angular-material angular-cdk

我有一个可拖动元素,我使用了 cdkDrag它对我来说很好用。现在,我需要在点击元素时切换一个标志。但是当我拖动元素并放下时,点击事件会触发。你能建议如何与cdkDrag一起工作吗?和 click一起。共享相同的代码片段。

        <div class="draggable-content" cdkDragBoundary=".drop-area" cdkDrag>
          <div class="min-workspace-view" *ngIf="showMinWorkspace === true">
            <mat-icon svgIcon="workspace" class="workspace-icon"
              (click)="$event.stopPropagation(); showMinWorkspace = !showMinWorkspace">
            </mat-icon>
          </div>
        </div>

期望是:当元素被拖动然后点击不应触发。当元素被点击时,则不应触发拖动事件。

最佳答案

我得到了一个解决方案。

您需要一个 bool 属性。我们叫它dragging .

在您的 cdkDrag元素,添加 cdkDragStarted回调,将此属性设置为 true .然后在您的 click回调,如果是 this.dragging为真,然后将其设置为假并返回。嘿普雷斯托!

在这里工作堆栈 Blitz https://stackblitz.com/edit/angular-drag-drop-and-clickable-element

关于angular - 区分 cdkDrag 并点击 angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56925391/

相关文章:

Angular CDK : attach overlay to a clicked element

Angular CDK拖放,保持顺序直到下降

html - 带有粘性标题和水平、垂直滚动条的垫表

javascript - AngularFire/Firestore - 将集合和文档作为服务返回

angular - 如何将购买的主题合并到 Angular 6 + Bootstrap 4 应用程序中

javascript - 将组件链接到单独的元素,并相对于该元素显示它

javascript - AngularJS 表单自定义验证。无法读取未定义的属性 '$validators'

angular - 使用 Angular 从服务器动态获取翻译

angular - 当我编辑列表项时,setValue 数据未显示在表单字段中

angular - 如何访问 Material 垫选择列表中的选择选项