首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在FormControl中引用FormArray元素

在FormControl中引用FormArray元素
EN

Stack Overflow用户
提问于 2018-03-02 22:32:14
回答 1查看 971关注 0票数 1

我似乎无法找到在组件模板中引用表单控件的方法。

虽然我将表单组(从<form>标记)传递到这个子组件中,但我知道我有一个有效的FormGroup对象结构,因为我可以看到来自console.log(this.f.getRawValue())的原始输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
abn:""
addressLine1:""
addressLine2:""
addressLine3:""
addressPostcode:""
addressState:""
addressSuburb:""
contactEmail:""
contactFax:""
contactMobile:""
contactPhone:""
fcApprovals:Array(1)
0:
approvalNumber:""
description:""
expires:Sat Mar 03 2018 17:07:50 GMT+1100 (AEDT) {}

这正是我所期望的进入html表单的对象结构。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div *ngIf="f.get('fcApprovals')" [formGroup]="f" class="block-container center form-panel not-full-width">

  <div class="panel-title">Approvals</div>
  <div class="block-container center not-full-width" formArrayName="fcApprovals"
       *ngFor="let approval of f.get('fcApprovals').controls; let i = index;">
    <div class="block-element pad-me-up" [formGroupName]="i">

      <div class="form-group" [ngClass]="{
      'has-danger': description.invalid && description.dirty,
      'has-success': description.valid && description.dirty}">
        <input type="text" class="form-control" placeholder="Description" name="description"
               formControlName="description" required/>

        <div *ngIf="description.untouched || description.valid"
             class="ui message">Description
        </div>
        <div *ngIf="description.dirty || description.touched">
          <div *ngIf="description.errors.required"
               class="ui error message">Description is required
          </div>
        </div>

        <div class="icon description"></div>
      </div>

这一页之后会继续,但上面的内容才是最重要的。问题是,引用“描述”是没有定义的。

我曾尝试过以下的推介:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
i.description
approval.description
fcApprovals[i].description
fcApprovals[i].control.description

还有更多。似乎什么都起不到作用。我得到的错误是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ApprovedComponent.html:6 ERROR TypeError: Cannot read property 'invalid' of undefined
    at Object.eval [as updateDirectives] (ApprovedComponent.html:8)
    at Object.debugUpdateDirectives [as updateDirectives] (core.js:14651)
    at checkAndUpdateView (core.js:13798)
    at callViewAction (core.js:14149)
    at execEmbeddedViewsAction (core.js:14107)
    at checkAndUpdateView (core.js:13799)
    at callViewAction (core.js:14149)
    at execEmbeddedViewsAction (core.js:14107)
    at checkAndUpdateView (core.js:13799)
    at callViewAction (core.js:14149)

错误引用描述引用上方的FormArray迭代,但属性“无效”首先出现在描述中。

那么,如何引用这些控件及其值呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-02 23:12:56

答案是:approval.get('description')

我碰巧在一篇无关的文章中偶然发现了一篇关于这一点的文章。它绝对是文档的好候选人,因为我不可能猜到这一点!

关键就在我的打字稿里。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  return this.fb.group({
    'description': ['', Validators.required],
    'approvalNumber': ['', Validators.required],
    'expires': new Date(),
  });

实际上,我将这三个控件放在一个组中,所以我迭代了一个包含一个或多个FormArray的FormGroups - golly!

但奇怪的是,错误对象似乎不在同一条路径上,因为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
approval.get('description').errors.required

返回“无法读取属性‘必选’的空”

我花了大约9个小时在这上面!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49081383

复制
相关文章
Angular系列教程-第四节
1.表单 Angular 提供了两种不同的方法来通过表单处理用户输入:响应式表单和模板驱动表单。 两者都从视图中捕获用户输入事件、验证用户输入、创建表单模型、修改数据模型,并提供跟踪这些更改的途径
苦咖啡
2020/04/21
2.8K0
Angular 从入坑到挖坑 - 表单控件概览
angular 入坑记录的笔记第三篇,介绍 angular 中表单控件的相关概念,了解如何在 angular 中创建一个表单,以及如何针对表单控件进行数据校验。
程序员宇说
2020/03/19
19K0
js如何引用同级元素
https://coder.itclan.cn/fontend/js/17-yinyong-tongji-elem/
itclanCoder
2023/02/26
7.9K0
js如何引用同级元素
<script>元素在XHTML中的用法
  编写XHTML代码的规则要比编写HTML严格得多,例如如下代码: 1 <script type="text/javascript"> 2 function compare(a, b){ 3 if(a < b) { 4 alert("A is less than B"); 5 } else if(a > b){ 6 alert("A is greater than B"); 7 } els
就只是小茗
2018/03/07
2.5K0
在Java 中安全使用接口引用
Photo by Joseph Maxim Reskp on Unsplash 我使用Java 开发过很多项目,这其中包括一些Web 应用和Android 客户端应用。作为Android 开发人员,J
小鄧子
2019/03/05
1.8K0
在Java 中安全使用接口引用
我使用Java 开发过很多项目,这其中包括一些Web 应用和Android 客户端应用。作为Android 开发人员,Java 就像我们的母语一样,但Android 世界是多元化的,并不是只有Java 才能用来写Android 程序,Kotlin 和Groovy 同样优秀,并且有着大量的粉丝。
程序亦非猿
2019/08/16
1.7K0
在maven中引用github上的资源
很多人选择在Github上开源项目,但很多开源项目要依赖一些自己写的jar。如何让用户(使用者)可以通过互联网自动下载所依赖的jar呢? 
前Thoughtworks-杨焱
2021/12/08
4K0
链表----在链表中添加元素详解
1.2对于链表来说,若想访问链表中每个节点则需要把链表的头存起来,假如链表的头节点为head,指向链表中第一个节点,如图:
wfaceboss
2019/04/08
2.7K0
链表----在链表中添加元素详解
微课系列(三):Python列表中存储的是元素的引用
技术要点:在Python中,变量不直接存储值,而是存储值的引用。同样,在列表、元组、字典、集合等容器类对象中也是存储的元素值的引用。
Python小屋屋主
2018/07/23
1.8K0
Java中弱引用、软引用、虚引用、强引用、 Finalizer引用
在Java层面,一共有四种引用:强引用、软引用、弱引用、虚引用,这几种引用的生命周期由强到弱。转换关系大致如下图所示:
良辰美景TT
2018/12/24
2.1K0
在未知大小的父元素中设置居中
当提到在web设计中居中元素时。关于被居中的元素和它父元素的信息,你知道的越多就越容易设置。那么假如当你不知道任何信息?居中也是可设置的。
lesM10
2019/08/26
4.1K0
在未知大小的父元素中设置居中
【说站】filter在JavaScript中过滤数组元素
1、filter为数组中的每个元素调用一次callback函数,并利用所有使callback返回true或等于true值的元素创建一个新的数组。callback只会调用已赋值的索引,而不会调用已删除或从未赋值的索引。未通过callback测试的元素将被跳过,不包含在新的数组中。过滤出符合条件的数组,组成新的数组。
很酷的站长
2022/11/24
3.5K0
【说站】filter在JavaScript中过滤数组元素
对象赋值在PHP中到底是不是引用?
之前的文章中,我们说过变量赋值的问题,其中有一个问题是对象在进行变量赋值的时候,直接就是引用赋值。那么到底真实情况是怎样呢?
硬核项目经理
2019/12/20
1.8K0
在Java中如何高效判断数组中是否包含某个元素
原文地址:http://www.hollischuang.com/archives/1269
Java后端技术
2018/08/09
5.2K0
理解Java中的强引用,软引用,弱引用,虚引用
在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这就像在商店购买了某样物品后,如果有用就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再把它捡回来使用就不可能了。
IT大咖说
2019/12/01
1.8K0
(转) 别再对 Angular 表单的 ControlValueAccessor 感到迷惑
原文链接:Never again be confused when implementing ControlValueAccessor in Angular forms
mafeifan
2019/01/28
3.8K0
Java中四种引用类型:强引用,软引用,弱引用,虚引用
类似Object obj = new Object()这类似的引用,强引用在程序代码中普遍存在,只要强引用在,垃圾搜集器永远不会搜集被引用的对象。也就是说,宁愿出现内存溢出(OutOfMemoryError),也不会回收这些对象
gang_luo
2020/08/13
8850
Java中四种引用类型:强引用,软引用,弱引用,虚引用
在Java中字符串是通过引用传递的?
这是一个经典的java问题。在stackoverflow上,许多类似的问题已经被问过了,但是许多回答是错误的或不完整的。 如果你不想深入思考的话,这个问题很简单。如果你想明白的更彻底,那么问题可能容易让人迷惑不清。 1. 一段有趣但令人困惑的代码 public static void main(String[] args) { String x = new String("ab"); change(x); System.out.println(x); } public static void c
三哥
2018/06/15
6.3K3
点击加载更多

相似问题

Angular FormArray:引用模板中动态添加的FormControl

31

从formArray中删除FormControl

217

在FormGroup inside FormArray中访问FormControl

111

FormControl / FormGroup / FormArray值类型

25

以FormControl而不是FormArray的形式返回FormArray

225
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文