代码之家  ›  专栏  ›  技术社区  ›  thebeancounter

Angular 5 formgroup列表控件或迭代它们

  •  1
  • thebeancounter  · 技术社区  · 7 年前

    我在formgorup中使用angular 5并希望迭代控件,为了基于表单创建动态组件,表单字段由外部数据服务(数据库等)提供

    现声明如下

    check = new FormGroup({
        firstName : new FormControl(true),
        lastName : new FormControl(false)
      });
    

    我发现 this 解释如何迭代控件,但它不起作用。我试图使用:

    for(let item of this.check.controls){}
    

    这是chrome的调试:

    无法读取未定义的属性“length”

    我无法访问此.check.controls.keys或keys()

    如何迭代键?

    谢谢

    3 回复  |  直到 7 年前
        1
  •  5
  •   Muhammed Albarmavi    7 年前

    试用 Object.keys 获取对象键的方法

    Object.keys(this.check.controls); // => ["firstName", "lastName"]
    

    this.check.controls 如果要获取对象的键,则为对象键/值对结构 {key1:value,key2:value} 可以使用返回包含键的数组的Object.keys方法 ['key1','key2']

        2
  •  3
  •   Chellappan வ    7 年前

    此窗体返回值对象而不是值数组

    check = new FormGroup({
            firstName : new FormControl(true),
            lastName : new FormControl(false)
          });
    

    如果要获取键,则必须使用Object.keys()方法返回给定对象的属性名数组,其顺序与使用普通循环时的顺序相同

    KeyArray= Object.keys(this.check.controls)// ["firstName", "lastName"]
    

    例子: https://stackblitz.com/edit/angular-stszta

        3
  •  1
  •   Lia    7 年前

    在对象上迭代:

    for(let item in this.check.controls){
        console.log(this.check.controls[item])
    }