2015-03-12 9 views
7

Mam element, który warunkowo pojawia się, który jest wymagany do wypełnienia, gdy jest widoczny. (Przy użyciu ng-wymagane)Niepoprawny formant formularza o nazwie = '' nie może być aktywowany na ukrytym elemencie.

Jednak, gdy nie jest on widoczny, ja otrzymuję następujący błąd:

An invalid form control with name='' is not focusable

Jak mogę zmusić NG-wymaganego do pracy tylko, jeśli element jest widoczny. Nie chcę wpisywać w formularzu wartości nieważnej, ponieważ jeśli to zrobię, gdy element będzie widoczny, sprawdzanie poprawności nie nastąpi.

+3

Jeśli używasz ng-hide, czy rozważałeś zamiast tego użycie polecenia ng-if (które całkowicie usuwa element z domeny)? – Joao

Odpowiedz

8

Podoba Ci się to, stosując logiczną zarówno ng-show i ng-required:

<form> 
    <input type="text" ng-show="displayCondition" ng-required="displayCondition"/> 
</form> 

Dobre pytanie - wiele osób nie zdaje sobie sprawy, że przechodząc false do ng-required wyłącza dyrektywy.

+2

Świetna odpowiedź - działała jak czar. Wielkie dzięki. – KingKongFrog

+1

Odpowiedź komentatora jest również ważna, ale zależy od tego, czy klucz ma być pusty (moje rozwiązanie), czy nieistniejący (jego). –

+0

Świetna odpowiedź czasu. –

2

Rozwiązałem go bardzo łatwo przy użyciu ng-if zamiast ng-show! My tylko ng-if. Kiedy nie jest widoczny element nie jest już w kodzie. Tak więc przeglądarka nie potwierdzi tego.

Powiązane problemy