2016-09-07 5 views
1

私はフォームをリセットする方法をいくつかStackoverflowの記事を読むが、私はそれを取得しません。 入力は有効でしたが、エラーメッセージが表示されました。アプリケーションをデバッグすると、メッセージにstyle = "opacity:1; margin-top:0px;"というメッセージが表示されますが、どこからわからないのですか。リセットのAngularJS 1.5.6リセットフォームとngメッセージ

<md-input-container flex style="margin-top: 0;margin-bottom: 5px"> 
    <label translate>maintenanceMessage.description</label> 
    <input md-maxlength="40" required name="description" md-no-asterisk 
      ng-model="maintenanceMessageCtrl.newMaintenanceMessage.description" flex> 
    <div ng-messages="maintenanceMessageForm.description.$error" ng-if="maintenanceMessageForm.description.$touched"> 
     <div ng-message="required" translate>maintenanceMessage.description.requiredMessage</div> 
     <div ng-message="md-maxlength" translate>maintenanceMessage.description.maxLengthMessage</div> 
    </div> 
    </md-input-container> 

私は次の関数

ctrl.resetFormAndHideDialog = function() { 
    ctrl.newMaintenanceMessage = {}; 
    ctrl.newMaintenanceMessage.expirationDate = new Date(); 
    ctrl.showLastModification = false; 
    $scope.maintenanceMessageForm.$setUntouched(); 
    $scope.maintenanceMessageForm.$setPristine(); 
    $mdDialog.hide(); 
}; 

を実行し、私は何かが足りないのですか?

ありがとうございます。


Conclusio: 角度の材料1.1.1はバグを持っているようです。したがって、メッセージは隠されていませんでした。

+0

私は角-材料1.1.1および1.5.8 angularJSを使用して非常に同様の問題を抱えています。あなたは最終的にどのソリューションを使用したのか教えてください。 – lealceldeiro

+1

ここでご確認いただけるように問題は解決されました https://github.com/angular/material/issues/9543 ダウングレードが異なるバージョンまたはその他の修正が含まれています –

+1

ありがとうございます!ダウングレードは私のためには機能しませんでしたが、回避策の1つがありました:) – lealceldeiro

答えて

1

私はCodePenにあなたの関連するマークアップとコードを入れてきたし、それは罰金だ - CodePen

だけ奇妙なことは、文字カウントは、フォームのリセット時に0に設定されないということです。 Maybe a bug

マークアップ

<div ng-controller="AppCtrl" ng-cloak="" ng-app="MyApp"> 
    <form name="maintenanceMessageForm"> 
    <md-input-container flex style="margin-top: 0;margin-bottom: 5px"> 
     <label>maintenanceMessage.description</label> 
     <input md-maxlength="40" required name="description" md-no-asterisk ng-model="newMaintenanceMessage.description" flex> 
     <div ng-messages="maintenanceMessageForm.description.$error" ng-if="maintenanceMessageForm.description.$touched"> 
     <div ng-message="required">{{maintenanceMessage.description.requiredMessage}}</div> 
     <div ng-message="md-maxlength">{{maintenanceMessage.description.maxLengthMessage</div> 
     </div> 
    </md-input-container> 
    </form> 
    <md-button class="md-raised md-primary" ng-click="resetForm()">Reset</md-button> 
</div> 

JS

angular.module('MyApp',['ngMaterial', 'ngMessages', 'material.svgAssetsCache', 'ngDialog']) 

.controller('AppCtrl', function($scope) { 
    $scope.maintenanceMessage = { 
    description: { 
     requiredMessage: "This is required", 
     maxLengthMessage: "Max length is 40" 
    } 
    }; 

    $scope.resetForm = function() { 
    $scope.newMaintenanceMessage = {}; 
    $scope.maintenanceMessageForm.$setUntouched(); 
    $scope.maintenanceMessageForm.$setPristine(); 
    }; 
}); 
+0

ありがとうございました、あなたのサンプルのバージョンを角度1.5.8と角度材料1.1.1に変更しました。今エラーが発生します。 –