【发布时间】:2018-12-27 20:16:42
【问题描述】:
我正在使用以下指令来允许根据用户输入自动调整文本区域的大小:
import { ElementRef, HostListener, Directive, OnInit } from '@angular/core';
@Directive({
selector: 'ion-textarea[autosize]'
})
export class Autosize implements OnInit {
@HostListener('input', ['$event.target'])
onInput(textArea:HTMLTextAreaElement):void {
this.adjust();
}
constructor(public element:ElementRef) {
}
ngOnInit():void {
setTimeout(() => this.adjust(), 0);
}
adjust():void {
const textArea = this.element.nativeElement.getElementsByTagName('textarea')[0];
textArea.style.height = 'auto';
textArea.style.height = textArea.scrollHeight + "px";
textArea.style.maxHeight = '100px';
}
}
它按预期工作,但是当该文本区域内的文本被手动删除时,该文本区域不会自动调整大小。
例如如果分配给该 textarea 的 [(ngModel)] 变量被分配了不同的字符串或空字符串,则文本区域的高度不会自动调整大小。用户需要重新开始输入才能使 textarea 相应地调整大小。
什么是解决这个问题的好方法?
【问题讨论】:
标签: angular dynamic resize textarea refresh