我在我的应用程序中使用了angular材质,我遇到了一个问题,基本上,当错误消息太大时,错误消息隐藏在下一个输入后面:
超文本标记语言:
<div class="example-container">
<mat-form-field>
<input matInput placeholder="Enter your email" [formControl]="email" required>
<mat-error *ngIf="email.invalid">{{getErrorMessage()}}</mat-error>
</mat-form-field>
<mat-form-field>
<input matInput placeholder="Enter your email">
</mat-form-field>
</div>
TS:
import {Component} from '@angular/core';
import {FormControl, Validators} from '@angular/forms';
/** @title Form field with error messages */
@Component({
selector: 'form-field-error-example',
templateUrl: 'form-field-error-example.html',
styleUrls: ['form-field-error-example.css'],
})
export class FormFieldErrorExample {
email = new FormControl('', [Validators.required, Validators.email]);
getErrorMessage() {
return this.email.hasError('required') ? 'You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value You must enter a value ' :
this.email.hasError('email') ? 'Not a valid email' :
'';
}
}
真的不知道如何使用材质模式来解决这个问题,或者使用另一种方法,例如纯css(覆盖材质类或添加新类-但我仍然不知道这是否是一件正确的事情)
**一个
4条答案
按热度按时间gdx19jrr1#
这可能会有所帮助,它描述了表单验证的一些最佳实践。
Form validation best practices
至于你的答案,
<mat-error>
没有暴露的属性,你可以设置这些属性来使错误框大小动态化。您将不得不使用不同的方法,例如:隐藏溢出并在悬停时显示弹出窗口。
验证错误消息应该简洁,任何额外的数据应该单独显示。
c2e8gylq2#
您可以为下一个元素添加顶部边距,类似于以下内容
qxsslcnc3#
使用Angular v15的基于MDC的表单字段,您可以将
subscriptSizing
输入设置为'dynamic'
。然后表单字段将在出现错误时动态添加必要的空格。有关更多信息,请参阅文档。更新stackblitz:https://stackblitz.com/edit/angular-74r7uy
有关MDC迁移的更多信息,请参见此guide。
wyyhbhjk4#
使用下面的
css
解决此问题: