AngularJS ng-pattern не работает с условиями, как ожидалось

#angularjs

#angularjs

Вопрос:

Я пытаюсь использовать условия с ng-pattern, но он показывает, что zip-файл все время недействителен. Если я использую шаблон без условия, все работает нормально.

 <md-input-container flex="20">
    <label>Zip Code</label>
    <input ng-model="$ctrl.PostalCode" name="Zip" ng-required="true"
       ng-pattern="{{$ctrl.Country == 'Canada' ? '/^(d{5}(-d{4})?|[A-Z]d[A-Z] *d[A-Z]d)$/' : '/^[0-9]*$/'}}">         
    <div ng-messages="$ctrl.testForm.Zip.$error">
        <div ng-message="pattern">Zip Code is not valid.</div>
    </div>
</md-input-container>
  

Ответ №1:

Если вы проверите свой шаблон в отображаемом HTML, вы увидите проблему. in d игнорируется, поскольку вы не избегаете его. Попробуйте это:

 ng-pattern="{{$ctrl.Country == 'Canada' ? '^(\d{5}(-\d{4})?|[A-Z]\d[A-Z] *\d[A-Z]\d)$' : '^[0-9]*$'}}"