Deaktivieren Sie die Schaltfläche in eckig mit zwei Bedingungen?

Lesezeit: 5 Minuten

Benutzer-Avatar
MariaJen

Ist das in eckig möglich?

<button type="submit" [disabled]="!validate && !SAForm.valid">Add</button>

Ich erwarte, dass, wenn beide Bedingungen wahr sind, die Schaltfläche aktiviert wird.

Ich habe den obigen Code bereits ausprobiert, aber er funktioniert nicht wie erwartet.

  • Es ist Jahre her, dass ich das hier gepostet habe, ich hätte nie gedacht, dass es so beliebt sein wird. Ich verwende Angular nicht mehr, aber ich verwende Laravel 8, Vue 3, Tailwind und Inertia. Damals bin ich nur ein Junior-Webentwickler, wenn ich diese Frage sehe, bekomme ich eine Gänsehaut, wie schlecht Code sein kann. Vielen Dank für all die Antworten unten. Ich weiß es wirklich zu schätzen. Entschuldigung für möglicherweise schlechtes Englisch

    – MariaJen

    27. Januar um 4:03


Es hört sich so an, als ob Sie stattdessen ein OR benötigen:

<button type="submit" [disabled]="!validate || !SAForm.valid">Add</button>

Dadurch wird die Schaltfläche deaktiviert, wenn nicht validiert oder wenn nicht SAForm.valid.

Benutzer-Avatar
bvdb

Neben der anderen Antwort möchte ich darauf hinweisen, dass diese Argumentation auch als bekannt ist das Gesetz von De Morgan. Es geht eigentlich mehr um Mathematik als um Programmieren, aber es ist so grundlegend, dass jeder Programmierer darüber Bescheid wissen sollte.

Dein Problem fing so an:

enabled  = A and B
disabled = not ( A and B )

So weit so gut, aber Sie sind noch einen Schritt weiter gegangen und haben versucht, die Zahnspange zu entfernen. Und das ist etwas kniffelig, weil man die austauschen muss and/&& mit einem or/||.

not ( A and B ) = not(A) OR not(B)

Oder in mathematischer Schreibweise:

Geben Sie hier die Bildbeschreibung ein

Dieses Gesetz behalte ich immer im Hinterkopf, wenn ich Bedingungen vereinfache oder mit Wahrscheinlichkeiten arbeite.

  • Genial. Dies ist einer der Vorteile von mehr Mathematikkenntnissen, da Sie diese Art von Dingen kennen, die sehr gut auf die Programmierung anwendbar sind.

    – Der.Wolfgang.Grimmer

    23. Dezember 2020 um 7:46 Uhr

  • @The.Wolfgang.Grimmer In der Tat, während Distributivität, Assoziativität und Kommutativität allgemein für Addition und Multiplikation bekannt sind (z (a+b)*c = ac+bc ), nicht genug Programmierer wissen, dass es ähnliche Gesetze in der “Booleschen Algebra” gibt. Darüber hinaus sind diese Regeln auch nützlich für “Mengenalgebra”, die Regeln für Vereinigung, Schnittmenge und Komplement definiert, die für das Erlernen relationaler Datenbanken (und SQL) von grundlegender Bedeutung sind. Und diejenigen, die sich mit digitaler Elektronik beschäftigt haben, mussten sie wahrscheinlich verwenden, um die UND/ODER/NICHT-Logik in NAND-Gatter umzuwandeln. Immer wieder dreht sich alles um „de Morgan“.

    – bvdb

    23. Dezember 2020 um 10:11 Uhr

Benutzer-Avatar
Vishal Hulawale

Deklarieren Sie eine Variable in der Datei „component.ts“ und initialisieren Sie sie mit einem Wert

 buttonDisabled: boolean;

  ngOnInit() {
    this.buttonDisabled = false;
  }

Jetzt können Sie in .html oder in der Vorlage folgenden Code einfügen:

<button disabled="{{buttonDisabled}}"> Click Me </button>

Jetzt können Sie die Schaltfläche aktivieren/deaktivieren, indem Sie den Wert von ändern buttonDisabled Variable.

  • Ich würde ngOnInit anstelle von Konstruktor verwenden.

    – Nate Getch

    13. Juni 2018 um 17:05 Uhr

Benutzer-Avatar
zaza

Ich verwende den ternären Operator, aber vergleiche if form.valid ist wahr. Ej:

<button mat-button color="primary" [disabled]="((formUser.valid==true) && (formColaborador.valid==true))? false:true" (click)="addClick()">Crear</button>

Benutzer-Avatar
Amr Eladawy

Ist das in Winkel 2 möglich?

Ja, es ist möglich.

Wenn beide Bedingungen wahr sind, aktivieren sie die Schaltfläche?

Nein, wenn sie wahr sind, wird die Schaltfläche deaktiviert. disabled="true".

Ich versuche den obigen Code, aber es funktioniert nicht gut

Was hast du erwartet? Die Schaltfläche wird deaktiviert, wenn valid ist falsch und das Eckige formGroup, SAForm ist ungültig.

Eine Empfehlung auch hier, Bitte machen Sie den Button vom Typ Button nicht zu einem Absenden, da dies dazu führen kann, dass das gesamte Formular abgeschickt wird und Sie es verwenden müssten invalidate und anhören (ngSubmit).

  • Ich erwarte, dass, wenn sie beide wahr sind, sie die Schaltfläche aktivieren werden

    – MariaJen

    21. April 2017 um 5:15 Uhr

  • richtig, wenn valid stimmt und die fromGroup auch gültig ist, dann wird die Schaltfläche aktiviert.

    – Amr Eladawy

    21. April 2017 um 5:18 Uhr

  • Sie können die anderen mit einer anderen Antwort versuchen oder die HTML- und die TS-Dateien posten, damit wir besser verstehen können, was das ist valiad variabel ist

    – Amr Eladawy

    21. April 2017 um 5:26 Uhr

  • und was wird der Code für die Validierung in der Schaltfläche sein

    – MariaJen

    21. April 2017 um 5:27 Uhr

  • Ich verstehe die Frage nicht. Bitte erklären Sie es mir.

    – Amr Eladawy

    21. April 2017 um 5:30 Uhr

Benutzer-Avatar
Sarjerao Ghadage

Die Verwendung des ternären Operators ist wie folgt möglich.[disabled] intern erforderlich wahr oder falsch für seinen Betrieb.

<button type="button" 
  [disabled]="(testVariable1 != 0 || testVariable2!=0)? true:false"
  mat-button>Button</button>

  • Ich erwarte, dass, wenn sie beide wahr sind, sie die Schaltfläche aktivieren werden

    – MariaJen

    21. April 2017 um 5:15 Uhr

  • richtig, wenn valid stimmt und die fromGroup auch gültig ist, dann wird die Schaltfläche aktiviert.

    – Amr Eladawy

    21. April 2017 um 5:18 Uhr

  • Sie können die anderen mit einer anderen Antwort versuchen oder die HTML- und die TS-Dateien posten, damit wir besser verstehen können, was das ist valiad variabel ist

    – Amr Eladawy

    21. April 2017 um 5:26 Uhr

  • und was wird der Code für die Validierung in der Schaltfläche sein

    – MariaJen

    21. April 2017 um 5:27 Uhr

  • Ich verstehe die Frage nicht. Bitte erklären Sie es mir.

    – Amr Eladawy

    21. April 2017 um 5:30 Uhr

1311250cookie-checkDeaktivieren Sie die Schaltfläche in eckig mit zwei Bedingungen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy