内容可编辑的 DIV 在 Firefox 中无法与角度双向绑定正常工作



我已经使我的div内容可编辑div,它还在keyup上打开ngx-popover,并根据searchText将搜索结果填充到弹出框中,所以我需要双向绑定以及内容可进一步编辑我需要div而不是输入:

<span>
<div id="contenteditablediv" contenteditable="true" (keyup)="triggerUserSearch()" type="text" [popover]="searchTemplate"
placement="bottom"  triggers="keyup click" [textContent]="searchText" (input)="searchText=$event.target.textContent" [outsideClick]="true"
containerClass="searchUsersPopup" placeholder="To" class="recipientInput searchTerm">{{searchText}}
</div>
</span>

但是当我添加以下代码行时:

(input)="searchText=$event.target.textContent"

它在火狐浏览器中无法正常工作。当您将光标放在末尾时,它会在火狐中向后键入。

我从下面的 Plunker 中获取了参考,它在 Firefox 中也无法正常工作。
同样的情况也一样 所以回答和 普伦克

我不确定(input)="searchText=$event.target.textContent"代码到底做了什么。但它绑定了搜索文本和div 值。 所以这是必需的,但也会引起问题。 如果可能,请解释上述代码的含义。谢谢!

(输入(

当输入或文本区域元素中的某些内容时触发输入事件 有变化,当元素发生变化时也会触发 具有内容可编辑属性。

由于内容可编辑元素没有更改事件输入,因此使用了更改事件输入 检查更改事件,Mozilla 有一些关于错误插入符号位置的错误。

(input)="searchText=$event.target.textContent"

如果您从div 中删除此行,它将在 Mozilla 中正常工作!

而且你不需要这个来获取(input(="searchText=$event.target.textContent"这个div值,你可以简单地使用ViewChild装饰器来获取div的值

@ViewChild('ref') ref:ElementRef; 
triggerUserSearch(){
console.log(this.ref.nativeElement.innerHTML);
}

在此处查看示例:https://stackblitz.com/edit/input-event

在.html:

<div (blur)="getContent($event.target.innerHTML)" contenteditable [innerHTML]="content"></div>

在 .ts 中:

getContent(innerText){
this.content = innerText;
}

最新更新