У меня есть эта директива об автоматическом размере ion-textarea :
import { Directive, HostListener, ElementRef } from '@angular/core';
@Directive({
selector: 'ion-textarea[autosize]'
})
export class AutoResizeTextareaDirective {
readonly defaultHeight = 64;
@HostListener('input', ['$event.target'])
onInput(textArea: HTMLTextAreaElement) {
this.adjust(textArea);
}
constructor(private element: ElementRef) {}
ngAfterViewInit() {
this.adjust();
}
adjust(textArea?: HTMLTextAreaElement) {
textArea = textArea || this.element.nativeElement.querySelector('textarea');
if (!textArea) {
return;
}
textArea.style.overflow = 'hidden';
textArea.style.height = 'auto';
textArea.style.height =
(textArea.value ? textArea.scrollHeight : this.defaultHeight) + 'px';
}
}
В моем modal.component. html:
<ion-textarea autosize [(ngModel)]="message.msg_text"></ion-textarea>
Директива была также добавлена к моему app.module.ts
. Кажется, это не работает, потому что я подозреваю, что это тот факт, что поле находится в модальном режиме. Как бы заставить это работать на модале, так как модал не содержит .module.ts
файл