現在、次のようなtextarea
があります。
<textarea matInput rows="5" cols="40" placeholder="text"></textarea>
ただし、常に同じサイズです。
textarea
のサイズを変更する方法についてのアイデアはありますか?
以下に例を示します。
<mat-form-field>
<mat-label>Description</mat-label>
<textarea matInput formControlName="description" matTextareaAutosize matAutosizeMinRows=1 matAutosizeMaxRows=5></textarea>
</mat-form-field>
あなたが意味するものに応じて:
ただし、常に同じサイズです。
2つのオプションがあります。
rows
\cols
に依存):現在、rows
のみがマテリアルtextarea
の高さに影響し、cols
は幅を変更しません。
したがって、幅を増やすには、width
を含むmat-form-field
でCSS textarea
プロパティを使用する必要があります。
<mat-form-field style="width: 300px;">
<textarea matInput rows="5" cols="40" placeholder="text"></textarea>
</mat-form-field>
textarea
コンテンツに合わせた動的なサイズ):マテリアル6では、CdkTextareaAutosize
ディレクティブが追加されました。
公式ドキュメント から:
CdkTextareaAutosizeディレクティブを任意の
<textarea>
に適用して、コンテンツに合わせて自動的にサイズ変更することができます。拡張する行の最小数と最大数は、それぞれcdkAutosizeMinRows
およびcdkAutosizeMaxRows
プロパティを介して設定できます。
そして、そこから簡単な例を示します:
<mat-form-field>
<mat-label>Autosize textarea</mat-label>
<textarea
matInput
cdkTextareaAutosize
cdkAutosizeMinRows="1"
cdkAutosizeMaxRows="5">
</textarea>
</mat-form-field>
注:matTextareaAutosize
は他の回答で言及されていますが、非推奨であり、次のメジャーリリースで削除されます。 公式ドキュメント は、代わりにcdkTextareaAutosize
をすでに使用しています。
角材7.2:
https://material.angular.io/components/input/examples
<mat-form-field>
<mat-label>Autosize textarea</mat-label>
<textarea matInput cdkTextareaAutosize
cdkAutosizeMinRows="2"
cdkAutosizeMaxRows="5"></textarea>
</mat-form-field>
cdkTextareaAutosize
、cdkAutosizeMinRows
、cdkAutosizeMaxRows
に注意してください
例 を参照してください。フォームにcssを追加して幅を指定することが重要です。
.example-form {
min-width: 150px;
max-width: 500px;
width: 100%;
}
また、テキストエリアへのCSS:
.example-full-width {
width: 100%;
}
Cssをフォームに追加しないと、展開アイコンが間違った位置に表示されます。
matTextareaAutosize
を適用し、プロパティmatAutosizeMinRows
およびmatAutosizeMaxRows
に値を割り当てることにより、texareaの高さを調整することができます。
詳細については、 https://material.angular.io/components/input/api を参照してください。
角度7.3.7:
<textarea [matTextareaAutosize] matInput placeholder="Leave a comment"></textarea>