在formarray控件和另一个窗体控件之间切换是否无法在angular中工作?

Knowledgeseeker001

嗨,我有一个5号角问题。它在这里可用于堆栈闪电战。https://angular-ivy-jmrzng.stackblitz.io/

问题是我有一个角5形式。在角形式中,我有一个名为Authority的表单数组控件和另一个名为censorshipApprover的控件。

this.formGroup = this.fb.group({
  authorities: this.fb.array([], Validators.required),
  censorshipApprover: ['']
});

表单数组控件和名为censorshipApprover的控件都显示为复选框。当我检查表单数组中的复选框控件时,该问题应取消选中censorshipapprover控件。另外,当我检查审查批准程序控件时,我想取消选中formarray中的所有控件。但是,它不起作用。任何想法我应该怎么做才能实现此功能。以下是逻辑

enum Authority {
  SYSTEM_ADMIN = 'ROLE_SYSTEM_ADMIN',
  GLOBAL_ADMIN = 'ROLE_GLOBAL_ADMIN',
  ACCOUNT_ADMIN = 'ROLE_ACCOUNT_ADMIN',
  ANONYMOUS = 'ROLE_ANONYMOUS',
  CAMPAIGN_MANAGER = 'ROLE_CAMPAIGN_MANAGER',
  TEAM_MEMBER = 'ROLE_TEAM_MEMBER',
  CENSORSHIP_APPROVER = 'ROLE_CENSORSHIP_APPROVER'
}

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit  {
  name = 'Angular ' + VERSION.major;

  authorities: Authority[] = [
    Authority.TEAM_MEMBER,
    Authority.CAMPAIGN_MANAGER,
    Authority.ACCOUNT_ADMIN
  ];

 formGroup: FormGroup;
 constructor(private fb: FormBuilder){}
 
  ngOnInit() {

    this.formGroup = this.fb.group({
      authorities: this.fb.array([], Validators.required),
      censorshipApprover: ['']
    });

    this.authorities.forEach(e => {
        this.authoritiesArray.push(this.fb.control(false));
    })


    this.authoritiesArray.valueChanges.subscribe(values => {
      this.censorshipApproverControl.setValue(false);
    });

  this.censorshipApproverControl.valueChanges.subscribe(value => {
     if (value) {
          this.authoritiesArray.controls.forEach(control => {
            control.setValue(false);
          });
    }
  });

  }
  get censorshipApproverControl(): FormControl {
    return this.formGroup.get('censorshipApprover') as FormControl;
  }
  get authoritiesArray(): FormArray {
    return this.formGroup.get('authorities') as FormArray;
  }
}

以下是html模板

<form novalidate [formGroup]="formGroup">

  <div *ngFor="let authority of authoritiesArray.controls; let i = index" formArrayName="authorities">
   User-Role-{{ i }} <input type="checkbox" [formControlName]="i" /> 
  </div>  

  <div> Or </div>

  Censor-Role <input
    formControlName="censorshipApprover"
    type="checkbox"
  />

</form>

您还可以在以下位置访问stackblitz https://stackblitz.com/edit/angular-ivy-jmrzng?embed=1&file=src/app/app.component.html

当您使用stackblitz时,您会看到我能够检查User-Role-0,User-Role-1和User-Role-2,然后检查Censor-Role,它将清除User-Role-0, User-Role-1和User-Role-2复选框。但是,当我检查Censor-Role时,它没有得到检查。

我怎样才能做到这一点。谢谢

西瓦库玛·塔迪斯蒂(Sivakumar Tadisetti)

authorities总是将censorshipApprover设置为false的Valueschanges 这就是为什么它没有得到检查。您可以按照以下步骤操作,如果authorities数组中选中了一个复选框,则仅更改状态censorshipApprover

this.authoritiesArray.valueChanges.subscribe(values => {
  if (values.some(val => val === true)) {
    this.censorshipApproverControl.reset();
  }
});

this.censorshipApproverControl.valueChanges.subscribe(value => {
  if (value) {
    this.authoritiesArray.reset();
  }
});

工作堆闪电战

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ASP.Net中的一个控件的两个CSS类之间切换?

来自分类Dev

从另一个子窗体访问子窗体中的控件

来自分类Dev

在Git分支之间切换以删除另一个分支中的文件

来自分类Dev

js切换:使锚触发另一个页面中的切换

来自分类Dev

如何制作一个列表和网格视图切换开关控件,以在AngularJS中加载局部控件?

来自分类Dev

如何制作一个列表和网格视图切换开关控件,以在AngularJS中加载局部控件?

来自分类Dev

切换切换另一个切换

来自分类Dev

在切换到另一个控件之前,如何将数据保存在用户控件上?

来自分类Dev

Windows窗体中的切换开关控件

来自分类Dev

Windows窗体中的切换开关控件

来自分类Dev

另一个项目控件/数据模板中的项目控件和项目模板

来自分类Dev

如何在演示文稿和另一个数据源之间平滑切换?

来自分类Dev

关闭子窗体,然后单击C#.net中的用户控件中的按钮,打开另一个窗体?

来自分类Dev

检查一个控件是否正在“触摸”另一个控件

来自分类Dev

是否可以在另一个用户控件上看到一个用户控件?

来自分类Dev

div 与另一个 div 切换

来自分类Dev

如何在Windows窗体中轻松地将一个控件替换为另一个具有相同名称的控件?

来自分类Dev

C#Winforms-将生存状态从一个用户控件切换到另一个用户控件?

来自分类Dev

如何在2个用户控件之间切换?

来自分类Dev

鼠标和实体控件之间的aframe切换

来自分类Dev

是否有WPF布局控件可用于在行和列布局之间动态切换?

来自分类Dev

单击另一个切换链接时,删除切换类

来自分类Dev

切换div以在点击时显示,而切换另一个以隐藏

来自分类Dev

将一个控件放在另一个控件中

来自分类Dev

在表单之间切换(关闭一个表单,然后打开另一个表单)

来自分类Dev

如何访问子窗体上的文本框控件的值,其中子窗体本身只是主窗体的另一个子窗体上的控件

来自分类Dev

在用户控件中的状态之间切换

来自分类Dev

通过Background Worker通过另一个类VB.Net中的方法更新主窗体上的控件

来自分类Dev

切换“ this”中另一个元素的类

Related 相关文章

  1. 1

    如何在ASP.Net中的一个控件的两个CSS类之间切换?

  2. 2

    从另一个子窗体访问子窗体中的控件

  3. 3

    在Git分支之间切换以删除另一个分支中的文件

  4. 4

    js切换:使锚触发另一个页面中的切换

  5. 5

    如何制作一个列表和网格视图切换开关控件,以在AngularJS中加载局部控件?

  6. 6

    如何制作一个列表和网格视图切换开关控件,以在AngularJS中加载局部控件?

  7. 7

    切换切换另一个切换

  8. 8

    在切换到另一个控件之前,如何将数据保存在用户控件上?

  9. 9

    Windows窗体中的切换开关控件

  10. 10

    Windows窗体中的切换开关控件

  11. 11

    另一个项目控件/数据模板中的项目控件和项目模板

  12. 12

    如何在演示文稿和另一个数据源之间平滑切换?

  13. 13

    关闭子窗体,然后单击C#.net中的用户控件中的按钮,打开另一个窗体?

  14. 14

    检查一个控件是否正在“触摸”另一个控件

  15. 15

    是否可以在另一个用户控件上看到一个用户控件?

  16. 16

    div 与另一个 div 切换

  17. 17

    如何在Windows窗体中轻松地将一个控件替换为另一个具有相同名称的控件?

  18. 18

    C#Winforms-将生存状态从一个用户控件切换到另一个用户控件?

  19. 19

    如何在2个用户控件之间切换?

  20. 20

    鼠标和实体控件之间的aframe切换

  21. 21

    是否有WPF布局控件可用于在行和列布局之间动态切换?

  22. 22

    单击另一个切换链接时,删除切换类

  23. 23

    切换div以在点击时显示,而切换另一个以隐藏

  24. 24

    将一个控件放在另一个控件中

  25. 25

    在表单之间切换(关闭一个表单,然后打开另一个表单)

  26. 26

    如何访问子窗体上的文本框控件的值,其中子窗体本身只是主窗体的另一个子窗体上的控件

  27. 27

    在用户控件中的状态之间切换

  28. 28

    通过Background Worker通过另一个类VB.Net中的方法更新主窗体上的控件

  29. 29

    切换“ this”中另一个元素的类

热门标签

归档