2016-03-21 59 views
1

我试图实现一个窗体,在单击提交按钮之前错误消息不显示。对于输入来说,这似乎可以开箱即用,但对于md-select而言并不像预期的那样运行。没有显示角度材质错误md-select

当我提交表单时(没有填写任何内容),我得到输入错误信息,但不是md-select。

http://plnkr.co/edit/BDB0NVccWckqgnSYD9Qt?p=preview

这里的形式:

<form name="userForm" novalidate ng-submit="test()"> 
    <md-input-container> 
    <label>Last Name</label> 
    <input name="lastName" ng-model="lastName" required> 
    <div ng-messages="userForm.lastName.$error"> 
     <div ng-message='required'>This is required!</div> 
    </div> 
    </md-input-container> 

    <md-input-container class="md-block"> 
    <label>Favorite Number</label> 
    <md-select name="favoriteNumber" ng-model="myNumber" required> 
     <md-option value="1">One</md-option> 
     <md-option value="2">Two</md-option> 
    </md-select> 
    <div ng-messages="userForm.favoriteNumber.$error"> 
     <div ng-message='required'>This is required</div> 
    </div> 
    </md-input-container> 

    <div>name = {{lastName}}</div> 
    <div>userForm.lastName.$error = {{userForm.lastName.$error}}</div> 
    <div>number = {{myNumber}}</div> 
    <div>userForm.favoriteNumber.$error = {{userForm.favoriteNumber.$error}} </div> 

    <md-button type="submit" class="md-raised md-primary">Save</md-button> 
</form> 

注意,这是固定为角材料1.1.1

回答

4

有关于这github issue

基本上,一个问题当md-select变得模糊时,消息才显示出来

+0

应该首先在那里检查,谢谢指出。 – Spencer

+0

如果这能帮助你,请接受答案,谢谢:D – stalin

+0

仍在研究这个问题。似乎描述了一个稍微不同的行为。如果它真的回答了问题,并且没有其他人提出解决方案,我会接受。 – Spencer

6

也许这可以帮助:

<div ng-messages="userForm.favoriteNumber.$error" ng-show="userForm.favoriteNumber.$invalid">

+0

为我解决了这个问题 –

+0

为我也工作 - 我用这个结合了一个布尔值来表示表单是否已经提交。 –

0

这是已知的bug提到@stalin。您可以通过input type="hidden"之类的方法来解决此问题,该服务承担了验证责任,而不是您的md-select或其他类似问题。

在某些情况下可以选择默认值。 HTML5选择/选项有一个选定的属性。如果它不起作用,你也可以尝试在你的一个选项上设置value =“”作为黑客。

0

下面代码工作完美..

<md-input-container flex-gt-xs class="form-group"> 
    <label translate>Types</label> 
    <md-select name="type" ng-required="true" ng-model="vm.model.type"> 
    <md-option>Number One</md-option> 
    <md-option>Number Two</md-option> 
    </md-select> 
    <div ng-messages="editOrganisationForm.type.$error" 
     ng-show="editOrganisationForm.$submitted || editOrganisationForm.type.$touched || editOrganisationForm.type.$dirty "> 
    <div ng-message-exp="['required']" ng-hide="editOrganisationForm.type.$valid"> 
     <span translate>Please select Type</span> 
    </div> 
    </div> 
</md-input-container>` 
0

我有同样的问题我固定它,如下所示

在我的表单标签

<form name="userForm" method="post" action="javascript:;"> 

在我的MD-选择框

<md-select name="favoriteNumber" ng-model="myNumber" required> 

在我提交按钮

<md-button class="md-raised md-primary" ng-click="saveMe()">Save</md-button> 

在我的控制器

$scope.saveMe = function() { 


    if(!$scope.userForm.$valid) { 
      $scope.userForm.$setSubmitted(); 
      return; 
     } 


     alert("I am validated"); 

    }; 

更重要的是,我使用角材料1.1.4版本

工作Flunker

http://embed.plnkr.co/1icZXYMheoAui7HYZukB/1

0

我使用的角度4,我试图在我的组件这样做:

this.formGroup.controls.selectField.updateValueAndValidity(); 

每当我试图向我的表格,并显示我的错误消息。

我不知道它为什么能起作用,但是=)

+0

这篇文章来自一年多前... – Baruch