Angular 自动调整文本区域的大小

Angular auto resize text-area

[![在此处输入图片描述][1]][1]我想为文本区域设置最大高度,这样当用户继续添加文本时,如果达到最大高度,它会添加一个滚动条。但是我目前的实现是它拉伸模态,所以如果我添加更多文本,模态就会变得太长。

我们如何使模态不被拉伸?谢谢

html

 <div fxLayout="row" fxLayoutAlign="start start" class="full-width question-text" fxLayoutGap="12px">
          <mat-form-field style="height: auto; overflow: hidden;" class="pr-4" appearance="outline">
            <mat-label>Comments</mat-label>
            <div
            style="
              margin-right: 10px;
              overflow-y: auto;
              height: auto;
              max-height: 200px;
            "
          >
          <textarea cdkTextareaAutosize
          matTextareaAutosize
          matInput
          formControlName="comment"
          [required]="isCommentRequired()"
        ></textarea>
          </div>

overflow-y:scroll 将它放在文本区域 css 中,这不是 angular 问题而是 CSS 问题,同时从父 [=] 中删除 overflow-y: auto 17=].

你试过matAutosizeMinRows & matAutosizeMaxRows

<textarea matInput
              matTextareaAutosize
              [matAutosizeMinRows]="min"
              [matAutosizeMaxRows]="max"></textarea>
  </mat-form-field>

我在 Angular Material (13.3.2)

的文档中找到 this

在组件中:

import {CdkTextareaAutosize} from '@angular/cdk/text-field';
import {Component, NgZone, ViewChild} from '@angular/core';
import {take} from 'rxjs/operators';

@Component({
  selector: 'text-field-autosize-textarea-example',
  templateUrl: './text-field-autosize-textarea-example.html',
  styleUrls: ['./text-field-autosize-textarea-example.css'],
})
export class TextFieldAutosizeTextareaExample {
  constructor(private _ngZone: NgZone) {}

  @ViewChild('autosize') autosize: CdkTextareaAutosize;

  triggerResize() {
    // Wait for changes to be applied, then trigger textarea resize.
    this._ngZone.onStable.pipe(take(1)).subscribe(() => this.autosize.resizeToFitContent(true));
  }
}

在模板中:

<mat-form-field appearance="fill">
  <mat-label>Autosize textarea</mat-label>
  <textarea matInput
            cdkTextareaAutosize
            #autosize="cdkTextareaAutosize"
            cdkAutosizeMinRows="1"
            cdkAutosizeMaxRows="5"></textarea>
</mat-form-field>