Я думаю о хорошем способе реализации ng-required. Скажем, у меня есть набор входов с ng-обязательным в моем приложении.
<input type="text" id="one" />
<input type="date" id="two" />
<input type="radio" id="three" />
<input type="checkbox" id="four" />
Я хотел бы что-то сделать в контроллере, где я мог бы передать массив необходимых полей. Я думаю, что если бы я создал массив таких элементов, как:
var myEl = angular.element( document.querySelector( '#some-id' ) );
и некоторые, каким образом заданы требуемые свойства.
Я пишу директиву, которая решила бы из массива, если требуется поле, если оно не существует в массиве, оно не требуется, если это необходимо, оно требуется.
В конечном счете, я хотел бы иметь массив, который позволяет передавать поля таким образом:
var reqArray = ('#id', ('#id1' || 'id2')) etc.
Работает так же, как и операторы условной логики:
#id требуется
# id1 || # id2 требуется, но не оба.
Не знаете, с чего начать, или если это возможно в Угловом.
Это упростит изменение обязательных полей в больших приложениях без необходимости изменения реального html.
Это можно сделать, но угловые уже предоставляют собственные способы проверки форм. Некоторые краткие сведения:
Тег формы должен иметь атрибут novalidate, чтобы предотвратить проверку HTML5. <form name="myForm" novalidate>
При этом теперь угловой может взять на себя ответственность за подтверждение, добавив к вашим входам "требуемый" атрибут <input ng-model="myModel" type="text" required>
К этому моменту угловой контроль над вашей проверкой, он также может проверять другие атрибуты HTML5, такие как шаблон. <input pattern="[0-9][AZ]{3}" type="text" title="Single digit followed by three uppercase letters."/>
Я предлагаю вам взглянуть на это официальное руководство (также взгляните на руководство по директивам на том же сайте, я хотел связать его, но у меня пока нет представителя).
При этом то, что вы пытаетесь выполнить, также возможно, но скорее избыточно, так как вам придется добавлять атрибут к вашим входам в любом случае (директива и угловая возможность уже проверять), а также требуют ngModel в директиве.
Я сделал это plunkr, чтобы показать вам, как это сделать, но обратите внимание на дополнительную работу, необходимую для проверки того, что угловой уже происходит изначально, я оставил бы такую работу для расширения проверки, например, для сравнения элементов или моделей.
Кроме того, запрос на селектор прямо так, как в вашем предложении, не считается "угловым способом". Лучшим способом было бы добавить директиву в ваш элемент формы и получить доступ к элементу через параметр "element" в директиве.
Надеюсь это поможет.