html - 尝试使用角度可编辑 div 中的文本内容更新变量时,可编辑 div 上的奇怪行为。有什么解释吗?
问题描述
我正在尝试创建一个文本编辑器,并使用可编辑的 div 以角度创建了一个自定义元素。
在某些情况下,我必须为 div 的内容设置一些初始值,并在某些情况下捕获 div 中的类型数据。
但是根据设置的初始值,我会为同一个 div 获得三种不同的行为。
我希望 div 的行为类似于常规输入字段,但我不想使用实际的 Input 元素。
我在Stackblitz 演示中做了一个关于该问题的工作示例。
组件代码如下。
元素组件的模板 HTML:
<div contentEditable='true' (input)="update($event)">{{value}}</div>
<p>{{value}}</p>
组件元素的打字稿文件:
import { Component, Input } from '@angular/core';
@Component({
selector: 'element',
template: `<div contentEditable='true' (input)="update($event)">{{value}}</div>
<p>{{value}}</p>
`,
styleUrls: ['./element.component.css']
})
export class ElementComponent {
@Input() value: string;
update(event) {
this.value = event.target.innerText;
}
}
CSS:
div{
background: black;
margin: auto;
color:white;
font-size: 2em;
}
这三种不同的行为是:
- 如果您没有为值输入字段设置初始值,那么在您输入 div 时,文本会不断地附加到自身。
- 如果您为值输入字段提供初始值,则在您键入 div 时,光标会将其重置为初始位置。
- 无论您提供初始文本还是在空 div 中输入内容,如果您从 div 中选择所有文本并点击删除或退格并开始输入。它表现为一个普通的文本框。
我期待第三种行为,例如在您清除元素的行为方式之后。
解决方案
可能的解释:您尚未声明绑定值。
解决方法:添加:
[textContent]="model"
声明模板时div
model;
ngOnInit(){
this.model = this.value;
}
内ElementComponent
出口类
相关: 如何在 angular2 中的 div 的 contenteditable 上使用 [(ngModel)]?, https://github.com/KostyaTretyak/ng-stack/tree/master/projects/contenteditable
推荐阅读
- angular - 如何从孩子重定向到更高的级别
- javascript - CSS-Javascript:通过 javascript 动态添加的元素超出了父容器的填充约束
- python - 递归内的for循环 - Python
- python - 比较多个变量?
- linux - 如何将我的 shellscript 发布到 dpkg 管理器
- javascript - 使用基本身份验证从 API 发布
- reactjs - Reactjs-Google ReCaptcha v3 onVerify 方法不会为每次登录点击触发
- c++ - cocos2d-x 3.17.2 utils::captureScreen 在我的 iPad mini 5th 上的 iOS 13.1.3 上断言失败
- r - R postscript 命令(colormodel cmyk)不起作用?
- ios - Storboard中uitableview中的Collectionview,在运行时变为nil?