Wiem, że w angular2 mogę wyłączyć przycisk z
[disable]
atrybutem np:
<button [disabled]="!isValid" (click)="onConfirm()">Confirm</button>
ale czy mogę to zrobić za pomocą [ngClass]
lub [ngStyle]
? Tak jak to:
<button [ngStyle]="{disabled : !isValid}" (click)="onConfirm()">Confirm</button>
Dzięki.
html
angular
angular2-template
angular2-forms
Nir Schwartz
źródło
źródło
Odpowiedzi:
Aktualizacja
Zastanawiam się. Dlaczego nie chcesz użyć
[disabled]
powiązania atrybutów dostarczonego przez Angular 2? To właściwy sposób radzenia sobie z tą sytuacją. Proponuję przenieśćisValid
czek metodą komponentów.Problem z tym, co próbowałeś, został wyjaśniony poniżej
Zasadniczo możesz użyć
ngClass
tutaj. Ale dodanie klasy nie uniemożliwiłoby wystrzelenia zdarzenia. Aby uruchomić zdarzenie przy poprawnym wejściu, powinieneś zmienićclick
kod zdarzenia na poniżej. Więc toonConfirm
zostanie uruchomione tylko wtedy, gdy pole jest prawidłowe.Demo tutaj
źródło
button[disabled]
przypadku zdarzenia opartego na selektorze i wyłączone, ogranicząclick
zdarzenie do uruchomienia na przycisku .. wngClass
klasowej rzeczy musisz sobie z tym poradzić samodzielnie, jak pokazano w powyższa odpowiedź ..[disabled]="!isValid"
isValid
flagę na UIPoleciłbym następujące.
źródło
tak, możesz
https://angular.io/docs/ts/latest/api/common/NgClass-directive.html
źródło
Jeśli masz formularz, możliwe jest również:
Demo tutaj: http://plnkr.co/edit/Xm2dCwqB9p6WygrquUGh?p=preview&open=app%2Fapp.component.ts
źródło
Użycie
ngClass
do wyłączenia przycisku dla nieprawidłowego formularza nie jest dobrą praktyką w Angular2, gdy zapewnia on wbudowane funkcje włączania i wyłączania przycisku, jeśli formularz jest prawidłowy i nieprawidłowy, bez wykonywania dodatkowych wysiłków / logiki.[disabled]
zrobi wszystko, na przykład jeśli formularz jest ważny, zostanie włączony, a jeśli formularz jest nieprawidłowy, zostanie automatycznie wyłączony.Zobacz przykład:
źródło
Może pomóc poniższy kod:
źródło
<button disabled="">
albo<button disabled="false">
jest nadal traktowane jak przycisk niepełnosprawnych w większości przeglądarekPróbowałem używać wyłączonych razem ze zdarzeniem kliknięcia. Poniżej znajduje się fragment, zaakceptowana odpowiedź również działała idealnie, dodaję tę odpowiedź, aby dać przykład, jak można jej używać z wyłączonymi i kliknięciami właściwości.
źródło
Jeśli używasz formularzy reaktywnych i chcesz wyłączyć niektóre dane wejściowe powiązane z kontrolką formularza, powinieneś umieścić tę
disabled
logikę w swoim kodzie i wywołaćyourFormControl.disable()
lubyourFormControl.enable()
źródło
Myślę, że to najłatwiejszy sposób
źródło
.ts kod
źródło