我有一个Angular组件,允许用户在
通过处理 input
事件,您可以从 paste
事件获取已粘贴的内容和 textarea
的更新后的内容:
<textarea #myText (paste)="onPaste($event)" (input)="onInput(myText.value)"></textarea>
使用以下代码:
onPaste(event: ClipboardEvent) {
let clipboardData = event.clipboardData || window.clipboardData;
let pastedText = clipboardData.getData('text');
...
}
onInput(content: string) {
...
}
请查看此 stackblitz以查看演示。
这是来自一个使用Angular2 TypeScript的示例,已经在我的项目中运行。希望它能帮助到别人。逻辑同样适用于其他情况。
<textarea placeholder="Type a message" (paste)="onPaste($event)"></textarea>
<!-- Place to render the image -->
<img #imgRenderer />
// Reference to the dom element
@ViewChild('imgRenderer') imgRenderer: ElementRef;
onPaste(event: any) {
const items = (event.clipboardData || event.originalEvent.clipboardData).items;
let blob = null;
for (const item of items) {
if (item.type.indexOf('image') === 0) {
blob = item.getAsFile();
}
}
// load image if there is a pasted image
if (blob !== null) {
const reader = new FileReader();
reader.onload = (evt: any) => {
console.log(evt.target.result); // data url!
this.imgRenderer.nativeElement.src = evt.target.result;
};
reader.readAsDataURL(blob);
}
}
[(ngModel)]
作为属性吗?ngModel doc。 - Abel Valdez