我正在尝试创建一个文本编辑器,并使用可编辑的div创建角度自定义元素。
在某些情况下,我必须为div的内容设置一些初始值,并在某些情况下捕获div中的类型数据。
但是我根据设置的初始值为同一个div获得了三种不同的行为。
我希望div的行为类似于常规输入字段,但我不想使用实际的Input元素。
我在Stackblitz demo中提出了一个问题的实例。
组件代码如下。
元素组件的模板HTML:
<div contentEditable='true' (input)="update($event)">{{value}}</div>
<p>{{value}}</p>
组件元素的typescript文件:
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;
}
三种不同的行为是:
我期待第三种行为,例如在您按照行为方式清除元素之后。
可能的解释:您尚未声明绑定值。
解决方法:添加:
[textContent]="model"
在宣布模板div
时
model;
ngOnInit(){
this.model = this.value;
}
在ElementComponent
出口类
相关:How to use [(ngModel)] on div's contenteditable in angular2?,https://github.com/KostyaTretyak/ng-stack/tree/master/projects/contenteditable