как отключить элементы определенной строки в formGroup в angular - PullRequest
0 голосов
/ 20 марта 2020

Привет! Мне нужно отключить определенную строку, выбранную с помощью флажка, я попробовал приведенный ниже код, но он не работает, поэтому, пожалуйста, помогите мне с этим, спасибо.

html код файла:

 <form [formGroup]="myFormGroup">
 <div *ngFor="let item of bookingList1; let i = index;" >
  <div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
    <div class="form-group mb-10">
      <label class="formLabel">Select</label>          
      <input type="checkbox"  class='check' name ="chk_{{i}}"   
(click)="changeCheck(i,$event)" >
    </div>
  </div>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 pl-0 pr-0">      
  <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
    <div class="form-group mb-10" >                    
      <label class="formLabel">{{i}}</label>
      <input  format="{dd-MM-yyyy}" type="text" [attr.disabled]="index == checkindex ? true : false" (paste)="false" onkeydown="return false" (ngModelChange)="checkDirty()" placeholder="select start date and end date" 
      class="form-control bg-grey" #dp="bsDaterangepicker"
             bsDaterangepicker [(value)]="item.BsRangeDate" [bsConfig]="bsConfig"
             formControlName="Period_{{i}}" [placement]="'top'">
      <span class="glyphicon glyphicon-calendar glyicon" (click)="dp.toggle()" [attr.aria-expanded]="dp.isOpen"
            value="Toggle" style="top:36px"></span>
    </div>
  </div>
  <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
    <div class="form-group mb-10">
      <label class="formLabel">{{checkindex}}</label>
      <input type="text" (change)="makeDirty()" [disabled]="disabledvar" class="form-control bg-grey" [(value)]="item.Hours" (focus)="mouseEnter() "
             (focusout)="mouseLeave()" formControlName="Hours_{{i}}">
    </div>
  </div>
  <div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
    <div class="form-group mb-10">
      <label class="formLabel">Unconfirmed</label>
      <input type="checkbox" (change)="makeDirty()" [attr.disabled]="disablerow" class="check" [(ngModel)]="item.Unconfirmed" [ngModelOptions]="{standalone:true}"          
      >

    </div>
  </div>
</div>

ts код файла:

 changeCheck(index, args) {
debugger;
if (args.srcElement.checked) {
  alert("checkbox has been checked "+ index); 
  this.checkindex = index;
  this.disablerow = true;
  this.disabled = this.disabled + "" + index;
  this.disabledvar = true;
  this.myFormGroup.controls[index].disable();
  this.myFormGroup.get("Hours_");
  alert("checkbox has been checked " + index);
} else {
  //alert("checkbox has been unchecked " + index); 
  this.checkindex = index;
  this.disablerow = false;
  alert("checkbox has been unchecked " + index);
  this.disabledvar = false;
}
}

этот код находится в модальном всплывающем окне, как показано на рисунке ниже:

Modal Popup Image

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

html:

<div class="box2" *ngFor="let item of numbers; let i = index;">
          <input type="checkbox" name=check{{i}} (change)="makeDirty(item)">

<label *ngIf="item.show == true">hi-{{i}}</label>
</div>

ts:

import { Component, HostBinding, HostListener } from "@angular/core";

@Component({
  selector: "my-app",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent {
  numbers = [{ id: 1, name: "list1" }, { id: 2, name: "list2" }];

  makeDirty(item) {
    item.show = !item.show;
  }
}

Я надеюсь, что это то же самое, что вам нужно. Просто скопируйте и вставьте приведенный выше код в https://stackblitz.com/, что легко понять.

0 голосов
/ 20 марта 2020

Вы можете сделать это полностью через шаблон: Подробнее здесь

Очень упрощенный пример:

<div *ngFor="let item of bookingList1; let i = index;" >
  . . .
    <!-- use the brackets to bind the disabled attribute of
         the inputs to the Unconfirmed property on the model --!>
    <input [disabled]='item.Unconfirmed' . . . />
  . . .
    <input type="checkbox" [(ngModel)]="item.Unconfirmed" />
  . . .
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...