即使未触及控件,也允许 md-error 显示错误消息

Allow md-error to show the error message even if control is untouched

随着 Material 2.0.0-beta.3 came the new md-error directive for displaying error messages (#3560) 的发布。 然而,md-error 似乎仅在控件为 touchedinvalid 时才显示错误消息。这可能是一个很好的默认设置,但在某些情况下,我希望能够在显示错误时进行自定义。我可以自定义显示错误消息的条件吗?

Show and hide validation error messages 下的 Angular 文档中,他们提到

You control visibility of the name error message by binding properties of the name control to the message element's hidden property

并解释一个有效的选择可以是:[hidden]="name.valid || name.pristine"(不依赖于 touched)。我想完成同样的事情,但使用 Material 而不是文档中使用的 Boostrap。

请参阅我的 Plunker 以获得我有两个输入控件的实时示例。每个至少需要 2 个字符。我希望在用户键入第一个字符后直接显示错误。第一个输入控件使用 md-error 但我无法获得所需的行为。 第二个输入控件使用 md-hint 的旧解决方法,其中可以通过使用 *ngIf:

来完成此操作
<md-hint *ngIf="fc2.dirty && fc2.invalid">
  Name must be at least 2 characters.
</md-hint>

不,无法自定义 md 错误何时可见。因此,我将其提交为 feature request.

如果您想要更改的只是当控件变脏时应直接显示错误,@HopScotch47 在 GitHub 上提供了一个很好的解决方法,可以在构造函数中将控件设置为触摸:

const ctrl = this.form.controls['ctrlName'];
ctrl.markAsTouched();