0
バリデータが呼び出されており、期待どおりにtrue/falseを返しています。しかし、バリデータがfalseを返す場合でも、ng-messagesが正しく動作するように、htmlは "ng-invalid"ではなく "ng-valid"のクラスを期待どおりに表示します。標準の「必須」エラーを使用すると、問題はありませんが、カスタムは動作しません。
デバッグ時に、$ errorが必要ではなく、daysofmonthではないこともわかりました。
私は、次のようなカスタムバリデータを持つコンポーネント、daysofmonthを作成しました:
this.ngModel.$validators.daysofmonth = function(modelValue) {
modelValue = modelValue || '';
let pieces = modelValue.split(',');
let isValid = true;
pieces.forEach(function(piece) {
let numberValue = parseInt(piece, 10);
if (isNaN(numberValue)) {
if (piece.trim() && piece.trim() !== 'L') {
isValid = false;
}
} else if (numberValue < 1 || numberValue > 31) {
isValid = false;
}
});
return isValid;
};
HTMLは次のようになります。
<form name="form">
<div>
<input name="daysofmonth" ng-model="ctrl.daysOfMonth">
</div>
<ng-messages for="form.daysofmonth.$error">
<ng-message when="daysofmonth">Please enter valid days.</ng-message>
</ng-messages>
</form>
任意の助けをいただければ幸いです!