Угловое автоматическое изменение размера текстовой области

[![введите здесь описание изображения][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>

3 ответа

Решение

overflow-y:scroll поместите это в textarea css, это не угловая проблема, а проблема CSS, также удалите overflow-y: auto из родительского div.

Вы пробовали matAutosizeMinRows и matAutosizeMaxRows

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

Я нашел это в документации Angular Material (13.3.2)

В компоненте:

      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>
Другие вопросы по тегам