2016-11-28 8 views
0

Я использую директиву Angular JS ngMessage для проверки формы, и я хотел бы агрегировать предупреждение ngMessage нескольких полей. В принципе, моя форма содержит 3 ввода (день, месяц, год), и я хочу отображать предупреждение, когда дата недействительна (независимо от того, является ли это днем, месяцем или годом, который недействителен). Как я могу это сделать? У меня есть plunkered мой вопрос, вот как я использую ngMessage директиву:Как заполнить ngMessage из нескольких полей

<form name="messageAnimationForm"> 
    <label for="day">Day</label> 
    <input ng-model="day" id="day" name="day" ng-minlength="1" ng-maxlength="2" required class="ngMessageSample" ng-pattern="/^\d+$/"/> <br/><br/> 
    <label for="month">Month</label> 
    <input ng-model="month" id="month" name="month" ng-minlength="1" ng-maxlength="2" required class="ngMessageSample" ng-pattern="/^\d+$/"/><br/><br/> 
    <label for="year">Year</label> 
    <input ng-model="year" id="year" name="year" ng-minlength="4" ng-maxlength="4" required class="ngMessageSample" ng-pattern="/^\d+$/"/><br/><br/> 

    <div> 
    <div ng-messages="messageAnimationForm.day.$error" class="ngMessagesClass" ng-messages-multiple> 
     <div ng-message="pattern" class="ngMessageClass">* This field is invalid, only numbers are allowed</div> 
     <div ng-message="required" class="ngMessageClass">* Day is mandatory</div> 
    </div> 

    <div ng-messages="messageAnimationForm.month.$error" class="ngMessagesClass" ng-messages-multiple> 
     <div ng-message="pattern" class="ngMessageClass">* This field is invalid, only numbers are allowed</div> 
     <div ng-message="required" class="ngMessageClass">* Month is mandatory</div> 
    </div> 

    <div ng-messages="messageAnimationForm.year.$error" class="ngMessagesClass" ng-messages-multiple> 
     <div ng-message="pattern" class="ngMessageClass">* This field is invalid, only numbers are allowed</div> 
     <div ng-message="required" class="ngMessageClass">* Year is mandatory</div> 
    </div> 
    </div> 
</form> 

ответ

1

Вы можете проверить, если вся ваша форма как ошибка с messageAnimationForm.$error:

<div ng-messages="messageAnimationForm.$error" class="ngMessagesClass" ng-messages-multiple> 
    <div ng-message="pattern" class="ngMessageClass">* A field is invalid, only numbers are allowed</div> 
    <div ng-message="minlength" class="ngMessageClass">* It's mandatory at least 1 characters</div> 
    <div ng-message="maxlength" class="ngMessageClass">* It's mandatory at most 2 characters</div> 
</div> 

Forked your Plunker here.

0

Попробуйте добавить пользовательские валидатор в одно из трех полей и запустить его вручную с вашего контроллера (или добавить часы к трем компонентам даты, чтобы запустить вашу функцию проверки):

<form name="messageAnimationForm"> 
<div ng-messages="messageAnimationForm.year.$error" class="ngMessagesClass" ng-messages-multiple> 
    <div ng-message="invalidDate" class="ngMessageClass">Date not valid</div> 
</div> 
</form> 

Затем в вашем контроллере вы должны проверить срок действия даты с помощью своих пользовательских правил. Если вы хотите, чтобы сообщение было показано, вы должны установить для пользовательской ошибки значение true (или «false», чтобы скрыть его):

 Смежные вопросы

  • Нет связанных вопросов^_^