Mam formularz, w którym jestem w trakcie zmiany moich pól telefonicznych z użycia regex do modułu wejściowego intl-tel. Występują problemy z pomyłką w sprawdzaniu poprawnych #s.
Mam formularz z kilkoma z tych pól ...
<div class="row">
<div class="col-xs-2">
<label for="cellPhone"
translate>CONTACT.CELL</label>
</div>
<div class="col-xs-6"
ng-class="{'has-error': !cellPhoneFocus && forms.contactForm.cellPhone.$invalid && forms.contactForm.cellPhone.$touched }">
<input type="text" class="form-control intlPhoneInput"
id="cellPhone" name="cellPhone"
ng-model="contact.cellPhone.display"
ng-focus="cellPhoneFocus = true"
ng-blur="cellPhoneFocus = false; validatePhone($event)">
<div ng-messages="forms.contactForm.cellPhone.$error"
ng-show="!cellPhoneFocus && forms.contactForm.cellPhone.$touched"
class="errorMessages">
<p ng-message="pattern" translate>
CRUD.VALID_PHONE</p>
</div>
</div>
i złożyć ...
<button type="submit" class="btn btn-primary" ng-disabled="forms.contactForm.$invalid" id="saveContactLink" translate>CRUD.SAVE</button>
Wtedy w moim kontrolera (Maszynopis) ...
//In Constructor
$scope.validatePhone = this.validatePhone.bind(this);
//Outside constructor
private validatePhone(eventObject: any) {
let thePhoneField = $('#' + eventObject.target.id);
let phoneIsValid = thePhoneField.intlTelInput("isValidNumber");
this.$scope.forms.contactForm[eventObject.target.id].$invalid = !phoneIsValid;
this.$scope.forms.contactForm[eventObject.target.id].$error = {"pattern": !phoneIsValid};
}
To poprawnie ustawia moją klasę błędów i komunikat o błędzie, ale nie powoduje, że FORM jest nieprawidłowy. Próbowałem $ setValidity ...
this.$scope.forms.contactForm[eventObject.target.id].$setValidity('pattern', !phoneIsValid);
... ale nic nie robi.
Jak ustawić nieprawidłowe ustawienie pola, wyświetlić poprawny komunikat ng (jeśli jest więcej niż jeden) i upewnić się, że formularz $ błędy zostanie zaktualizowany, aby zgłoszenie zostało wyłączone?
To spowoduje unieważnienie formularza, ale nie pomoże, aby było ważne, gdy pole jest poprawione, ponieważ nie mogę po prostu zrobić czegoś innego na validatePhone, aby ustawić poprawny formularz ... ponieważ jest więcej niż jedno pole. – NikZ