Angular [disabled] = "MyBoolean" не работает - PullRequest
0 голосов
/ 02 мая 2018

У меня есть некоторые входы (флажки), и я хочу, чтобы они были отключены, если мои логические значения истинны. Но это не работает ... Самое смешное, кнопка отправки работает просто отлично, и это тот же метод ...

myComponent.html

      <form [formGroup]="BetreuungsoptionForm" (ngSubmit)="onSubmit()">
        <label *ngIf="!eingetragen" for="art">Art</label>
        <select *ngIf="!eingetragen" formControlName="art" id="art" class="form-control" [(ngModel)]="Art" required >
          <option value="festeAnmeldung">feste Anmeldung</option>
          <option value="flexibleAnmeldung">flexible Anmeldung</option>
        </select>
        <label for="datum">Beginn Datum</label>
        <input formControlName="datum" type="date" id="datum" class="form-control" required>
        <label *ngIf="(Art == 'festeAnmeldung')" for="montag">Montag</label>
        <input *ngIf="(Art == 'festeAnmeldung')" formControlName="montag" [disabled]="montag" type="checkbox" id="montag" class="form-control wochentag">
        <label *ngIf="(Art == 'festeAnmeldung')" for="dienstag">Dienstag</label>
        <input *ngIf="(Art == 'festeAnmeldung')" formControlName="dienstag" [disabled]="dienstag" type="checkbox" id="dienstag" class="form-control wochentag">
        <label *ngIf="(Art == 'festeAnmeldung')" for="mittwoch">Mittwoch</label>
        <input *ngIf="(Art == 'festeAnmeldung')" formControlName="mittwoch" [disabled]="mittwoch" type="checkbox" id="mittwoch" class="form-control wochentag">
        <label *ngIf="(Art == 'festeAnmeldung')" for="donnerstag">Donnerstag</label>
        <input *ngIf="(Art == 'festeAnmeldung')" formControlName="donnerstag" [disabled]="donnerstag" type="checkbox" id="donnerstag" class="form-control wochentag">
        <label *ngIf="(Art == 'festeAnmeldung')" for="freitag">Freitag</label>
        <input *ngIf="(Art == 'festeAnmeldung' )" formControlName="freitag" [disabled]="freitag" type="checkbox" id="freitag" class="form-control wochentag">
    <button type="submit" [disabled]="!BetreuungsoptionForm.valid" class ="btn btn-primary">Speichern</button>
    <button type="button" (click)="OnBetreuungsoptionInfos()" class ="btn btn-success">weitere Informationen</button>
    <button type="button" *ngIf="!gekuendigt" (click)="OnBetreuungsoptionLoeschen()" class ="btn btn-danger">Kündigen</button>
  </form>

myComponent.ts

    this.BetreuungsoptionForm = new FormGroup
    ({
      art: new FormControl(),
      datum: new FormControl(this.BetreuungsoptionenKindRef[d].Beginn.toString().substring(0,10)),
      montag: new FormControl(this.BetreuungsoptionenKindRef[d].Montag),
      dienstag: new FormControl(this.BetreuungsoptionenKindRef[d].Dienstag),
      mittwoch: new FormControl(this.BetreuungsoptionenKindRef[d].Mittwoch),
      donnerstag: new FormControl(this.BetreuungsoptionenKindRef[d].Donnerstag),
      freitag: new FormControl(this.BetreuungsoptionenKindRef[d].Freitag)
    })
      if(this.BetreuungsoptionenKindRef.Montag)
      {
        this.montag = true;
      }
      if(this.BetreuungsoptionenKindRef.Dienstag)
      {
        this.dienstag = true;
      }
      if(this.BetreuungsoptionenKindRef.Mittwoch)
      {
        this.mittwoch = true;
      }
      if(this.BetreuungsoptionenKindRef.Donnerstag)
      {
        this.donnerstag = true;
      }
      if(this.BetreuungsoptionenKindRef.Freitag)
      {
        this.freitag = true;
      }

Ответы [ 4 ]

0 голосов
/ 17 апреля 2019

Попробуйте, поверьте мне, это работает ..

<input [disabled]="isLoading ? true : null" />

Используйте null вместо false

0 голосов
/ 02 мая 2018

Реактивные формы не поддерживают собственный атрибут 'disabled'. Если вы хотите, чтобы они работали так, как вы хотели, попробуйте изучить это: https://netbasal.com/disabling-form-controls-when-working-with-reactive-forms-in-angular-549dd7b42110

Также см. Документ Угловые реактивные формы, чтобы сделать что-то подобное в управлении формой.

Например: новый FormControl ({значение: 'Tom', отключено: true})

0 голосов
/ 22 ноября 2018

Для меня ничего из вышеперечисленного не сработало, в том числе и ниже

[disabled]="!enableDelete">

Что сработало для меня, было

[disabled]="enableSave == 'false'">
0 голосов
/ 02 мая 2018

Попробуйте [attr.disabled]=freitag? true : null" или [attr.readonly]="freitag" вместо Вы можете использовать такие атрибуты, как [class.btn-lg]="someValue" аналогичным образом.

Ваше текстовое поле работает из-за этого:

Атрибут disabled - еще один специфический пример. Кнопки По умолчанию свойство disabled имеет значение false, поэтому кнопка включена. когда Вы добавляете отключенный атрибут, только его присутствие инициализирует для свойства button установлено значение true, поэтому кнопка отключена.

Добавление и удаление отключенного атрибута отключает и включает кнопка. Значение атрибута не имеет значения, поэтому вы невозможно включить кнопку, написав <button disabled="false">Still Disabled</button>.

из https://angular.io/guide/template-syntax

...