Я хочу, чтобы textarea гибкость росла в зависимости от доступного пространства.
В общем, если у меня есть
<form>
<mat-form-field class = "example-full-width area-1">
<mat-label>Leave a comment</mat-label>
<textarea matInput placeholder = "Ex. It makes me feel..."></textarea>
</mat-form-field>
<mat-form-field class = "example-full-width area-2" >
<mat-label>Leave a comment</mat-label>
<textarea matInput placeholder = "Ex. It makes me feel..."></textarea>
</mat-form-field>
</form>
Я ожидаю, что область ввода также вырастет. Я знаю, что существует директива cdkTextareaAutosize, но это позволит textarea расти в зависимости от ввода. Чего я не хочу иметь.
Мне бы хотелось, чтобы textarea растягивалось на всё height, а не только на небольшую часть. Я хочу иметь какой-то динамический подход - в зависимости от того, где я размещаю компонент.






Приведенный ниже CSS может работать, мы можем просто настроить его так, чтобы он всегда на 100% основывался на стилях flexbox и height:100%, мы используем display: flex и flex-grow: 1, чтобы поля соответствовали доступному пространству:
::ng-deep {
.full-textarea {
display: flex;
mat-form-field {
display: flex;
flex-grow: 1;
.mat-mdc-form-field-flex,
.mat-mdc-form-field-infix,
textarea {
height: 100% !important;
}
}
}
}
HTML
<form class = "full-textarea">
<mat-form-field class = "example-full-width area-1">
<mat-label>Leave a comment</mat-label>
<textarea matInput placeholder = "Ex. It makes me feel..."></textarea>
</mat-form-field>
<mat-form-field class = "example-full-width area-2">
<mat-label>Leave a comment</mat-label>
<textarea matInput placeholder = "Ex. It makes me feel..."></textarea>
</mat-form-field>
</form>
Я создал проблему на GitHub github.com/angular/comComponents/issues/28912
Спасибо за образец. Я тоже думал о таком решении. Основная проблема, с которой я сталкиваюсь при таком подходе, заключается в том, что мне нужно полагаться на внутренние классы материалов. И они могут измениться, как мы видели в случае с Material2 и могут быть впереди с Material3.... Честно говоря, не знаю, требуется ли вообще Material, и достаточно ли обычного текстового поля. В любом случае - спасибо