必填字段的 Angular2 视觉提示

标签 angular angular2-forms

我有以下标记

.html

  <div
      class = "mdl-textfield mdl-js-textfield mdl-textfield--floating-label form-group">
    <input
        required
        type = "text"
        pattern = "{{regex}}"
        [(ngModel)] = "name.first"
        ngControl = "first"
        #first = "ngForm"
        class = "mdl-textfield__input form-control"
        id = "first">
    <label
        class = "mdl-textfield__label"
        for = "first">First</label>
    <span *ngIf = "showErrorMsg()"
          class =
              "mdl-textfield__error">{{msg}}</span>
  </div>

Angular2(和 Angular2-dart)是否有任何内置视觉提示来向用户表明该字段是必填字段?

谢谢

最佳答案

表单初始化时您提到的提示是原始状态。表单字段可以有 3 种状态:触摸/未触摸、原始/脏和有效/无效。

您必须同时使用这 3 种方法才能获得您想要的造型效果。例如:

form input.ng-invalid, form input.ng-pristine.ng-invalid:focus {
  border: 1px solid red;
}

form input.ng-pristine {
    border: 1px solid dimgrey;
}

这会导致表单开始时(原始)的所有字段都变成灰色(正常颜色)。如果用户触摸该字段及其所需字段,它将呈红色。但如果用户立即点击离开而不编辑该字段,该字段将变为灰色。

如果用户键入一个值,但该字段仍然无效,即使用户单击离开,该字段仍将保持红色。这是使用这些样式的更直观的方式。在开始时将所有内容标记为无效,或者仅仅因为用户触摸了某个字段就将其标记为红色,这并不是一个良好的用户体验。

检查此运行 code example这种造型的实际效果。

关于必填字段的 Angular2 视觉提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34817967/

相关文章:

typescript - Angular 2 HTTP GET 等同于 Angular HTTP GET

angular - 如何在angular2中获取 Paypal 交易细节?

angular - 复选框不返回假 Angular 2

forms - 如何将新的 FormGroup 或 FormControl 附加到表单

Angular:nativeElement 在 ViewChild 上未定义

twitter-bootstrap-3 - 如何在 Angular2 中实现可折叠侧边栏?

javascript - Angular2 react 形式确认值相等

javascript - 为什么 ngForm "controls"属性在我的测试中为空? ( Angular )

javascript - 如何动态地将提供者添加到注入(inject)器?

angular - @Viewchild 不在 Directive 中工作,而是在 Component 中工作