gpt4 book ai didi

angular - 如何在我打字时垂直自动调整 ionic 输入场的大小

转载 作者:太空狗 更新时间:2023-10-29 18:15:29 24 4
gpt4 key购买 nike

当我输入长文本时,ion-input 字段保持相同的高度,我只能看到可用可见区域中的文本。在我键入时,我希望输入字段根据其中的数据在垂直方向自动调整为 2 行或 3 行。

我的page.html代码:

  <ion-item>
<ion-input placeholder="type message here"></ion-input>
</ion-item>

我附上截图以阐明我要解释的内容:

enter image description here

最佳答案

基于 this amazing repo 您可以创建一个自定义指令来为您处理。

就像您在 this working Stackblitz project 中看到的那样,该指令将如下所示:

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.overflow = 'hidden';
textArea.style.height = 'auto';
textArea.style.height = textArea.scrollHeight + 'px';
}
}

就是这样!为了看到它的实际效果,您可以像这样在任何页面中使用它:

组件

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';

@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {

dummyText: string = `Type a longer text to see how this expands!`;

constructor(public navCtrl: NavController) { }

}

查看

<ion-header>
<ion-navbar>
<ion-title>Autosizing Textarea</ion-title>
</ion-navbar>
</ion-header>

<ion-content padding>
<ion-item>
<!-- Use rows="1" to initialize it as a single line text-area -->
<ion-textarea rows="1" name="dummyText" [(ngModel)]="dummyText" autosize></ion-textarea>
</ion-item>
</ion-content>

关于angular - 如何在我打字时垂直自动调整 ionic 输入场的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47547571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com