Angular Material 2:修复多行错误消息

时间:2017-09-09 12:52:44

标签: angular angular2-forms angular-material2

我在角度应用程序中使用角度材料2。当表单输入字段错误消息超过一行时,我遇到了问题。这是照片:

md-error-multiline-bug

以下是代码:

<md-error *ngIf="password.touched && password.invalid">
          <span *ngIf="password.errors.required">
                {{'PASSWORD_RECOVERY.FIELD_REQUIRED' | translate}}
          </span>
          <span *ngIf="password.errors.minlength || password.errors.maxlength">
                {{'PASSWORD_RECOVERY.PASSWORD_LENGTH' | translate}}
          </span>
          <span *ngIf="password.errors.pattern">
                {{'PASSWORD_RECOVERY.FOR_A_SECURE_PASSWORD' | translate}}
          </span>
</md-error>

我通过阅读github了解到,这是角质2材料中的一个错误。有人通过自定义解决方法设法解决了这个问题吗?

2 个答案:

答案 0 :(得分:1)

问题是类.mat-form-field-subscript-wrapper的元素是position: absolute,所以它不占用真实空间。

根据on this issue on github的建议xumepadismal,您可以添加此scss作为解决我的问题的解决方法:

// Workaround for https://github.com/angular/material2/issues/4580.
mat-form-field .mat-form-field {
  &-underline {
    position: relative;
    bottom: auto;
  }
  &-subscript-wrapper {
    position: static;
  }
}

它转换静态div中的.mat-form-field-subscript-wrapper节点,并在输入字段后面重新定位.mat-form-field-unterline

答案 1 :(得分:-3)

mat-form-field.ng-invalid.ng-touched {animation: example;animation-duration: 0.3s;margin-bottom: 20px;}
@keyframes example {from {margin-bottom: 0;}to {margin-bottom: 20px;}}

对我有用。