即使控件未受影响,也允许md-error显示错误消息

时间:2017-04-19 15:39:36

标签: angular angular-material2

随着Material 2.0.0-beta.3的发布,出现了用于显示错误消息的新md-error指令(#3560)。 但是,如果控件为md-errortouchedinvalid似乎只显示错误消息。这可能是一个很好的默认设置,但在某些情况下,我希望能够自定义何时显示错误。我可以自定义错误消息显示在哪些条件下吗?

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

  

通过将名称控件的属性绑定到消息元素的隐藏属性来控制名称错误消息的可见性

并解释一个有效的选择可能是:[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> 完成此操作:

WHILE (1=1) BEGIN
    FETCH NEXT FROM RandomChar_Cursor INTO @RandomChar
    IF @@FETCH_STATUS <> 0
        BREAK
    ... use @RandomChar
END

1 个答案:

答案 0 :(得分:0)

不,当md-error应该可见时,无法自定义。因此,我已将其作为feature request提交。

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

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