Я пишу приложение с AngularJS на интерфейсе, которое динамически создает элементы формы с помощью директив, поэтому имя каждого элемента формы неизвестно заранее.Интерполяция внутри ng-if
В настоящее время я пытаюсь выполнить проверку формы для каждого элемента, но для этого требуется интерполяция для определения имени каждого элемента формы. Вот что я пытался сделать:
<span class="error-msg" data-ng-if="form.dateInput{{ question.questionAnswerId }}.$error.required && submitted">
Required
</span>
Однако, это дало мне следующую ошибку:
Syntax Error: Token '{' is an unexpected token at column 15 of the expression [form.dateInput{{ question.questionAnswerId }}.$error.required && submitted] starting at [{{ question.questionAnswerId }}.$error.required && submitted].
Поскольку это, кажется, не допускается, есть другой способ, я могу отобразить сообщение, если на элемент требуемой формы не ответил?
Я смог интерполировать имя каждого элемента формы внутри ng-класса следующим образом, поэтому я думал, что он будет работать и для ng-if.
ng-class="{ 'has-error' : form.dateInput{{ question.questionAnswerId }}.$invalid && submitted }"
Попробуйте это:. 'Данных нг-если =" форма [ 'dateInput' + question.questionAnswerId] $ error.required && submit ". –
@YauheniLeichanok Ваше предложение сработало, спасибо! Я видел этот другой вопрос, но он не предложил предложения, как я мог бы избежать использования интерполяции. Я не могу поверить, что не думал использовать другую нотацию для ссылки на свойство объекта JS. – Casey
@YauheniLeichanok - Это сработало для меня; однако, я хотел бы понять, что происходит. Является ли это на самом деле массивом или делает Angular что-то особенное с []? – karns