【问题标题】:Angular2 access value in Form表单中的Angular2访问值
【发布时间】:2017-03-24 15:48:13
【问题描述】:

我在从表单中获取 ID 时遇到问题。

this.myForm 看起来像这样 @Input() public myForm: FormGroup;

它是来自另一个 .ts 文件的输入

这是表单的结构:
我的表格
- 名字
- 姓氏
- 电子邮件
——标签(FormArray)
  ---id (FormGroup)

我想访问 id 并用一个用户的所有标签填充 this.selectedTagList,这就是我想要做的:

const control: FormArray = <FormArray>this.myForm.controls[ 'tags' ];
control.controls.forEach(tag=> {
this.selectedTagList.push(this.tagList.find(tag.value.id));
});

如果我 console.log(this.myForm) 我得到这个结构:

console.log(control.controls), 'controls' 来自上面的代码:

但是当我执行 console.log(control.controls.length) 时,我得到 0。或者当我执行 console.log(control.controls[0]) 时,我得到未定义。

我不知道 FormGroup 对象去了哪里,也不知道为什么它说 Array[0] 里面有 4 个 FormGroup 对象。

【问题讨论】:

  • 能否添加更多代码,请像表单创建部分一样,它会比屏幕截图更有帮助。
  • 尝试和 John 说的一样,你拥有的不是数字索引数组,而是具有命名索引的对象(如关联数组)。 w3schools.com/js/js_arrays.asp 转到链接中的“关联数组”和“数组和对象之间的区别”部分

标签: angular angular2-forms angular2-formbuilder


【解决方案1】:

试试 console.log(this.myForm.controls['id']);

【讨论】:

    【解决方案2】:

    尝试和约翰说的一样,你拥有的不是数字索引数组,而是你有一个具有命名索引的对象(如关联数组)。

    在 JavaScript 中,数组使用编号索引。 在 JavaScript 中,对象使用命名索引。其中命名索引与关联数组相同。

    欲了解更多信息,请参阅:https://www.w3schools.com/js/js_arrays.asp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 2016-11-04
      • 2016-09-18
      • 2018-09-21
      • 1970-01-01
      相关资源
      最近更新 更多