2016-03-21 63 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