4

我正在尝试使用 div 元素标记并使其表现为带有 css 的文本区域。

#textarea {
    -moz-appearance: textfield-multiline;   ------------ card.component.css
    -webkit-appearance: textarea;
    border: 1px solid gray;
    font: medium -moz-fixed;
    font: -webkit-small-control;
    height: 28px;
    overflow: auto;
    padding: 2px;
    resize: both;
    width: 400px;
}

<div id="textarea" contenteditable>I look like a textarea</div>  ---- card.component.html

但我在我的卡上使用父组件(类别组件)的 cdkDrag

<div cdkDrag class="col-sm-12 px-2 pb-2">
  <app-card (cardEvent)="deleteCard($event)" [card]="card">

我发现此链接contenteditable 无法与 cdkDrag 在 google-chrome 上正常工作,解释相同,但无法得到任何答案。

4

3 回答 3

4

CDKDragRef监听该mousedown事件,因此您可以(mousedown)="$event.stopPropagation()"向 div 添加一个处理程序,contenteditable以防止该事件冒泡到具有该cdkDrag指令的元素。

编辑:这是 CDKDragRef代码中的调用站点:https ://github.com/angular/components/blob/master/src/cdk/drag-drop/drag-ref.ts#L775

于 2020-09-27T01:56:46.037 回答
1

该问题是由指令吸收的鼠标左键事件引起的。CdkDrag如果您使用选项卡导航到元素或右键单击它,则可以进行编辑以确认这一点。

一种可能的解决方案是将指令的cdkDragDisabled属性设置为 true ,例如CdkDrag

<div cdkDrag [cdkDragDisabled]="some condition" ...

编辑时间。

只需将相同的值添加到[cdkDragDisabled]and[contentEditable]就可以了。

于 2020-04-09T19:34:42.660 回答
0
<div class="custom-editable" contenteditable="true" #contentNotes (mousedown)="$event.stopPropagation()"></div>

它的工作和工作效果很好

于 2021-01-30T09:56:36.423 回答