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>
[![在此处输入图片描述][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>