Ответ 1
Вот пример:
<mat-form-field>
<mat-label>Description</mat-label>
<textarea matInput formControlName="description" matTextareaAutosize matAutosizeMinRows=1 matAutosizeMaxRows=5></textarea>
</mat-form-field>
В настоящее время у меня есть 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>
В зависимости от того, что вы имели в виду:
Однако это всегда один и тот же размер.
Есть два варианта.
rows
\cols
):В настоящее время только rows
влияет на высоту материала textarea
, cols
не меняет его ширину.
Поэтому для увеличения ширины мы должны использовать свойство CSS width
для mat-form-field
, содержащее наш 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
.
Дополнительную информацию см. на странице https://material.angular.io/components/input/api.
Угловая 7.3.7:
<textarea [matTextareaAutosize] matInput placeholder="Leave a comment"></textarea>