Angular - Textarea 指令 maxHeight

Posted

技术标签:

【中文标题】Angular - Textarea 指令 maxHeight【英文标题】:Angular - Textarea directive maxHeight 【发布时间】:2018-12-23 20:26:01 【问题描述】:

目前,我正在使用以下代码编写一个指令,用于根据用户输入自动调整文本区域的大小:

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';
  

但是,我一直在努力增加最大高度。因为如果用户输入了很长的消息,文本区域将在视图之外展开。有没有办法让它扩展直到 textarea 的行达到 3 ,然后就像一个普通的文本区域一样工作,里面有滚动和固定的高度?

【问题讨论】:

【参考方案1】:

您可以将 maxHeight 添加到您的元素样式中。

Here's a working example.

adjust():void 
   const textArea = this.element.nativeElement.getElementsByTagName('textarea')[0];
   //textArea.style.overflow = 'hidden';
   textArea.style.height = 'auto';
   textArea.style.height = textArea.scrollHeight + 'px';
   textArea.style.maxHeight = '100px';

【讨论】:

我刚刚尝试使用它,但是maxHeight 似乎并不适用。文本区域仍然扩展超过 100 像素。 您查看我提供的链接了吗?你能不能也创建一个让我看看? 成功了!谢谢! 太好了,很高兴为您提供帮助!【参考方案2】:

尝试为您的元素设置一个 css 属性 max-height。

【讨论】:

我试过了。但是,maxHeight 似乎并不适用。 Textarea 仍然能够扩展超过给定的 maxHeight。

以上是关于Angular - Textarea 指令 maxHeight的主要内容,如果未能解决你的问题,请参考以下文章

Angular - Textarea 自动高度不会在文本删除时自动调整大小

Angular2更新指令输入

Angular JS 在 textarea 中显示最后几行

我们在哪里可以找到 TextAngular 的 textarea 元素

css - max-height: 100% 不适用于 textarea

Angular - 根据行数设置 textarea 行