Приведенное ниже решение основано на предположении, что вам не нужно FormControl
во втором флажке, если вы это сделаете, пожалуйста, дайте мне знать.
Вы можете сделать что-то подобное ниже, чтобыВыполните это.
Создайте templatRef #firstCheck
на входе один
<input #firstCheck type="checkbox" [formControlName]="i" (change)="onPermissionChange(i)">
На входе два отключите вторую проверку, если #firstCheck
отмечен [disabled]="!firstCheck.checked"
, затем создайте tempalteRef #secondCheck
и установитеsecondCheck.checked
значение до orders.allowGrant
при клике.
<input #secondCheck type="checkbox" [disabled]="!firstCheck.checked" (click)="orders[i].allowGrant = secondCheck.checked">
В submit()
выдвинуть значения до resultsArray
, если установлен первый флажок и console.log
const resultsArray = []
for(let i = 0; i < this.form.get('orders').value.length; i++){
if(this.form.get('orders').value[i]){
resultsArray.push({id:this.orders[i].id, allowGrant:this.orders[i].allowGrant})
}
}
console.log(resultsArray);
Чтобы снять второй флажок при первом снятии выделения, вы можете сделать что-то вроде ниже.
Я сделал все это в представлении без метода ... установите secondCheck
и allowGrant
в false при первом нажатии, используйте(change)
на secondCheck
вместо (click)
, как у меня было раньше.
<input #firstCheck type="checkbox" [formControlName]="i" (change)="onPermissionChange(i); secondCheck.checked = false; orders[i].allowGrant = secondCheck.checked">
<input #secondCheck type="checkbox" [disabled]="!firstCheck.checked" (change)="orders[i].allowGrant = secondCheck.checked"> </label>
см. Пересмотренный стек
Стек стек
https://stackblitz.com/edit/angular-xpcz82?embed=1&file=src/app/app.component.html