問題は、フィールドはそれらのすべてが同じ名前variant_value
を持って、あなたのケースでは、一貫性のあるユニークな名前を持っていなければならないということです。そのため、動的なフィールドには、例えば、リスト上の位置に応じて名前を付けることができます。
name="variant_value{{$index}}"
あなたはそのユニークな名前を使用してフィールドと検証の状態を求めることができるこの方法は:
<span ng-show="addproductForm['variant_value'+$index].$invalid && !addproductForm['variant_value'+$index].$pristine">
//my message
</span>
また、AngularJs検証システムにはngFormディレクティブが必要です。
<form name="addproductForm" novalidate>
</form>
ベロースニペットは、コードの動作バージョンです。
angular.module('myApp', [])
.controller('myController', function ($scope) {
$scope.variants = [
{ name: 'variant1', variant_value: "1" },
{ name: 'variant2', variant_value: "" },
{ name: 'variant3', variant_value: "" },
{ name: 'variant4', variant_value: "" },
{ name: 'variant5', variant_value: "" },
];
});
angular.element(document).ready(function() {
angular.bootstrap(document, ['myApp']);
});
.help-block{
display:inline-block;
}
.color-ferozimp{
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.js"></script>
<div ng-controller="myController">
<form name="addproductForm" novalidate>
<div data-ng-repeat="variant in variants" class="col-md-12 col-sm-12 col-xs-12 form-group">
<label for="text">{{variant.name}}:</label>
<input type="text"
name="variant_value{{$index}}"
class="form-control"
ng-model="variant.variant_value"
placeholder="Enter {{variant.name}}"
ng-minlength="2"
ng-maxlength="30"
required>
<span ng-show="addproductForm['variant_value'+$index].$invalid && !addproductForm['variant_value'+$index].$pristine"
class="help-block color-ferozimp">
Choose {{variant_name}} please
</span>
</div>
</form>
</div>
コンソールにエラーが発生しましたか? –
いいえ男性consioleでエラーが発生していません –