首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在没有*ngFor的情况下在FormArray中引用FormGroup :我遇到错误

在没有*ngFor的情况下,在FormArray中引用FormGroup,可以通过以下步骤解决问题:

  1. 首先,创建一个空的FormArray对象,用于存储FormGroup。
  2. 在组件的构造函数中,初始化FormBuilder,并创建一个FormGroup对象。
  3. 在FormGroup对象中,创建需要的FormControl或者FormGroup。
  4. 将FormGroup对象添加到FormArray中,使用FormArray的push方法。
  5. 在模板中,使用FormArray的controls属性获取所有的FormGroup对象。
  6. 使用索引值访问特定的FormGroup对象,并在需要的地方使用它。

下面是一个示例代码:

在组件中:

代码语言:txt
复制
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, FormArray } from '@angular/forms';

@Component({
  selector: 'app-example',
  templateUrl: './example.component.html',
  styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {
  formArray: FormArray;

  constructor(private formBuilder: FormBuilder) { }

  ngOnInit() {
    this.formArray = this.formBuilder.array([]);

    const formGroup = this.formBuilder.group({
      name: '',
      age: ''
    });

    this.formArray.push(formGroup);
  }
}

在模板中:

代码语言:txt
复制
<form [formGroup]="formArray">
  <div formArrayName="formArray">
    <div *ngFor="let group of formArray.controls; let i = index">
      <div [formGroupName]="i">
        <input formControlName="name" placeholder="Name">
        <input formControlName="age" placeholder="Age">
      </div>
    </div>
  </div>
</form>

在上述示例中,我们创建了一个空的FormArray对象,并在组件的构造函数中初始化了FormBuilder。然后,我们创建了一个FormGroup对象,并将其添加到FormArray中。在模板中,我们使用*ngFor循环遍历FormArray的controls属性,获取所有的FormGroup对象,并使用[formGroupName]指令将其绑定到相应的索引值上。

这样,我们就可以在没有*ngFor的情况下,在FormArray中引用FormGroup了。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网通信(IoT Hub):https://cloud.tencent.com/product/iothub
  • 腾讯云移动推送(TPNS):https://cloud.tencent.com/product/tpns
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙(Tencent Real-Time Rendering (TRTR)):https://cloud.tencent.com/product/trtr
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Angular 从入坑到挖坑 - 表单控件概览

一、Overview angular 入坑记录笔记第三篇,介绍 angular 中表单控件相关概念,了解如何在 angular 创建一个表单,以及如何针对表单控件进行数据校验。...,从而生成错误信息列表 在进行用户输入数据有效性验证时,在控件上通过添加一个模板引用变量来暴露出 ngModel,从而在模板获取到指定控件状态信息,之后就可以通过获取错误信息列表来进行反馈 <div...在数据验证失败情况下,对于系统来说,表单是不允许提交,因此可以将提交事件绑定到表单 ngSubmit 事件属性上,通过模板引用变量形式,在提交按钮处进行数据有效性判断,当无效时,禁用表单提交按钮...类方式来简化完成表单构建 FormBuilder 服务有三个方法:control、group 和 array,用于在组件类中分别生成 FormControl、FormGroupFormArray...对于模板驱动表单,同样是采用自定义指令方式进行跨字段交叉验证,与单个控件验证不同,此时需要将指令添加到 form 标签上,然后使用模板引用变量来获取错误信息 import { Directive

18.9K20

Angular: 最佳实践

Note: 本文中,将尽量避免官方在 Angular Style Guide 提及模式和有用实践,而是专注自己经验得出东西,将用例子来说明。...如果我们有一个 Order 类型变量,我们只能将这三个字符串一个分配给 status 字段,分配其他类型 TS 编辑器都会跑出错误。...在应用程序 tsconfig.json 文件,我们可以设置这个标志,告诉编辑器在未明确类型时候抛出错误。否则,编辑器坚定它无法推断变量类型,而认为是 any 类型。...从模版到组件方法委托比原始逻辑更难。请注意,这里用了比原始更难词语,而不是复杂这个词。这是因为除了检查直接条件语句之外,任何逻辑都应该写在组件类方法,而不是写在模版。...读者可能意识到我并没有写关于 Directives 和 Pipes 相关内容,那是因为想写篇详细文章,关于 Angular DOM 是怎么工作

2.8K40
  • Angular8稳定版修改概述

    最喜欢:你可以调试模板(确信很多开发人员需要这个功能)。 Bazel支持 Bazel是谷歌开源另一款工具,“我们不喜欢谷歌”。...简答:还没有。目前,它处于“选择预览”模式。 Bazel可作为选择加入,预计将包含@angular/cli在第9版。...增量构建:您将能够仅构建和部署已更改内容而不是整个应用程序。 您可以弹出Bazel文件,默认情况下它们是隐藏。...清除所有元素 以前要删除所有元素,formArray 我们必须循环删除第一个元素直到空: while(formArray.length){ formArray.removeAt(0); } 现在就不需要那样操作了...没有太多突破性变化 - 所以你可能应该做得很好。你可以在这里查看。

    4.5K20

    AngularDart4.0 指南- 模板语法二 顶

    要访问hero属性,请参考ngFor宿主元素(或其后代内)hero输入变量。在这里,英雄首先在插值中被引用,然后传递给组件hero属性绑定。...在大多数情况下,Angular将引用变量值设置为声明元素。...heroForm值是什么? heroForm是一个Angular NgForm指令引用,可以跟踪表单每个控件值和有效性。 原生元素没有form属性。...模板引用变量警告说明 模板引用变量(#phone)与模板输入变量(let phone)不同,您在*ngFor可能看到那样。 了解“结构指令”指南中差异。 引用变量范围是整个模板。...显示器是空白,但应用程序保持滚动没有错误。 The null hero's name is {{nullHero?.

    30K20

    AngularDart4.0 英雄之旅-教程-04明细 顶

    你可以在模板引用这个变量来访问当前英雄属性。...而应将样式放在.css文件,并使用@ComponentstyleUrls参数引用该文件。 按照惯例,组件CSS和Dart文件名称具有相同基础命名前缀(app_component)。...但是列表和细节视图没有连接。 当用户从列表中选择一个英雄时,选择英雄应该出现在细节视图中。 这个UI模式被称为“主/细节”。在这种情况下,主人是英雄列表,细节是选择英雄。...刷新浏览器,该应用程序不再失败,名称列表再次显示在浏览器。 当没有选定英雄时,ngIf指令从DOM移除英雄详情HTML。 没有英雄细节元素或绑定担心。...您将Hero类移到lib / src下自己文件。 你增加了选择英雄和显示英雄细节能力。 您了解了如何在组件模板中使用核心指令ngIf和ngFor

    3K30

    AngularDart 4.0 高级-结构指令 顶

    该指南在谈论其属性以及指令功能时引用了指令类。 指南在描述如何将指令应用于HTML模板元素时引用了属性(attribute)名称。...当你编写自己结构指令时,可以使用这些微观语法机制。 研究NgIf和NgFor源代码是了解更多信息好方法。 模板输入变量 模板输入变量是一个变量,其值可以在模板单个实例引用。...变量作用域限于重复模板单个实例。 您可以在其他结构指令定义再次使用相同变量名称。 您通过在#(#var)前缀加上变量名称来声明一个模板引用变量。 引用变量是指其附加元素,组件或指令。...它可以在整个模板任何地方访问。 模板输入和引用变量名称都有其自己名称空间。 let herohero变量永远不会和#herohero一样。...{{hero.name}} 如果没有宿主元素,通常可以将内容包装在本机HTML容器元素(,然后将该指令附加到该容器

    16.1K20

    使用Angular8和百度地图api开发《旅游清单》

    大陆页面主要展示你去过和即将要去路线,可以进行相关操作。...服务类定义通常紧跟在 “@Injectable()” 装饰器之后。该装饰器提供元数据可以让你服务作为依赖被注入到客户组件。...,在网上搜集了各种资料,都没有达到效果,我们这里使用jquery$.getScript(url),结合jsonp回调,即可解决该问题。...,这里用来做存储第三方组件位置,定义好之后在app.module.ts引入: // material组件库 import { CustomMaterialModule } from '....未完善部分:添加清单时,如果添了不符合规范地址或者百度地图查不到地址,因该出现错误提示,这块会在后期优化。

    6K30

    AngularDart4.0 指南- 模板语法一 顶

    在Angular早期教程,你遇到了插值双曲括号{{and}}。...如果引用这些名称空间名称,则模板变量名称优先,后面是指令上下文,最后是组件成员名称。 前面的例子显示了这样一个名字冲突。 该组件具有hero属性,而* ngFor定义了英雄模板变量。...请遵循以下准则: 没有明显副作用 快速执行 简单 幂等性 这些指导方针例外情况应该是在你理解情况下。 没有明显副作用 模板表达式不应该更改目标属性值以外任何应用程序状态。...更改检测周期由许多异步活动触发,承诺分辨率,http结果,计时器事件,按键和鼠标移动。 表达式应该快速完成,否则用户可能会遇到卡帧,尤其是在较慢设备上。 当他们计算成本很高时,考虑缓存值。... 在许多情况下插值是属性绑定较为方便替代品。 将数据值呈现为字符串时,没有技术上理由去选择另一种形式,但插值更可读。

    5.2K10

    高级 Angular 组件模式 (5)

    目标 在视图模板内,获取一个指令引用。 实现 模板引用变量是获取某个元素、组件或者指令引用一种方式,这个引用可以在当前视图模板任何地方使用。...Note: 请注意作用域问题,如果你使用或者是一个结构性指令,比如*ngIf或者*ngFor,它会在这个模板上创建一个新作用域,之后在其内部声明模板引用变量无法在该模板作用域以外使用...// app.component.html // someDiv is an HTMLDivElement 成果 Note: 在stackblitz通过打印模板引用变量所指向名字...,在这里再补充一些,如何在组件或者指令类内部使用。...Note: 在类获取模板引用变量所指向引用时,请格外注意你期望获取引用类型,在例子,我们期望获取html元素,因此这里引用类型是ElementRef,如果是指令或者组件,则分别要对应其类型Type

    64120

    Reactjs+BootStrap开发自制编程语言Monkey编译器:创建简易页面IDE

    :3000, 基本情况如下图: ?...Button,(上面左下角红色按钮就是由Button组件创建),那么我们可以通过bootstrap.Button来引用,这跟我们很类似与从一个类引用公有成员变量。...在上面的代码我们导入了Component类有被使用到,但导入React组件却没有被使用到,你可以尝试把第一行React给删除然后再加载页面,你就可以看到错误信息:’React’ must be...上面这坨看似与HTML代码非常类似的代码块就叫JSX.它们格式跟HTML很像,但他们不是HTML, 因为它其中包含了HTML规范没有的标签,例如bootstrap.Panel, 其实这对尖括号包含东西都叫组件而不是标签...上面那一坨看似HTML代码其实是以HTML标签化形式来编写javascript代码,首先要注意上面那坨代码,有很多元素是HTML规范没有的。

    4.6K20

    AngularDart4.0 指南- 表单 顶

    这个表格三个字段两个是必需。 遵循材料设计准则,必填字段带有星号(*)。 如果您删除了英雄名称,表单将以吸引人注意风格显示验证错误: ?...你会发现这个按钮是启用,尽管它没有做任何有用事情。 现在,如果您删除Name,则违反了“必需”规则,这在错误消息中正确记录。 提交按钮也被禁用。 没有留下深刻印象? 想一想。...如果没有Angular帮助,你需要做什么才能将按钮启用/禁用状态连接到表单有效性? 对你来说,这很简单: 在(增强)表单元素上定义一个模板引用变量。 在多处按钮引用该变量。...显示Model(可选) 提交表单目前没有视觉效果。 预期演示。 增加代码过后demo不会教你任何关于表单新东西。 但是这是一个锻炼一些新获得绑定技巧机会。...模板引用变量,heroForm和name。 双向数据绑定([(ngModel)])。 用于验证和表单元素更改跟踪NgControl 指令。

    17.5K30

    理论 | Angular 响应式编程 -- 浅淡 Rx 流式思维

    2、其中如果年龄小于等于3个月,按天为单位,如果小于等于2岁按月为单位,其余情况按岁为单位。其实就是考虑幼儿情况啦。 3、填年龄时,出生日期随之变化,因为无法精确,所以只需精确到选择单位即可。...Angular 处理响应式表单只有 3 个步骤: 1、在组件 HTML 模版给要处理控件加上 formControlName="blablabla" 2、form 标签添加 [formGroup...]="xxx" 指令,这个 xxx 就是你在组件声明 FormGroup 类型成员变量:比如下面代码 form: FormGroup; 3、在组件构造函数取得 FormBuilder 后(...对于响应式编程方式思考 上面的例子,不知道大家发现没有,当然 Rx 提供了好多方便操作符。但更重要是,写 Rx 时候,我们需要对流程理解足够清晰,或者说 Rx 逼着我们对流程反复梳理。...这个 else 可以携带一个模版引用。比如下面例子:如果用户登录成功显示用户名,否则显示登录链接。 另一个改进是 ngIf 现在可以将评估表达式结果赋值给一个变量,好处是什么呢?

    5.3K10

    AngularDart 4.0 高级-管道 顶

    注意如何添加一个英雄: heroes.add(hero); 您将英雄添加到英雄列表。 对列表引用没有改变。 这是同一个列表。 这都是Angular关心。...从它角度来看,同样列表,没有变化,没有显示更新。 为了解决这个问题,创建一个新英雄列表并将其分配给heroes。 这次Angular检测到列表引用已经改变。...更常见情况是,您不知道数据何时发生变化,特别是在以多种方式变异数据应用程序,可能在远离应用程序位置。 这样应用程序组件通常无法了解这些更改。 此外,篡改组件设计以适应管道是不明智。...Angular没有等价物。 这不是一个疏忽。 Angular不提供这样管道,因为它们表现不佳,并且避免操控性变弱。 filter和orderBy都需要引用对象属性参数。...--> 您通过文本字符串来识别排序字段,期望管道通过索引引用属性值(hero

    6.4K20

    AngularDart4.0 指南-体系结构概述 顶

    HeroDetailComponent是HeroListComponent一个子项。 ? 注意是如何在原生HTML元素合适存放。...数据绑定 如果没有框架,您将负责将数据值推送到HTML控件,并将用户响应转化为操作和值更新。...在Dart,唯一值为true是布尔值true; 所有其他值是错误。 JavaScript和TypeScript相反,将诸如1和大多数非空对象值视为true。...服务通常是一个狭义,明确目的。 它应该做一些具体事情,并做好。 例子包括: 日志服务 数据服务 消息总线 税计算器 应用配置 Angular没有特别指定服务。 Angular没有定义服务。...通过组件提供服务与应用程序组件树所有组件后代共享。 引导时注册提供程序情况非常少见。 有关详细信息,请参阅依赖注入页面的配置注入部分。

    7.9K30

    Angular 项目实现权限控制

    这是参与「掘金日新计划 · 4 月更文挑战」第9天。 上一篇文章我们讲到了 Angular 组件通信。本文我们讲讲,在项目开发,你是否会遇到这样需求: 请根据用户登陆,限制其访问内容。...返回数据格式需要我们按照自己在 app-routing.module.ts 编写好路由路径对应。...-- demo.component.html --> <li *ngFor...,拥有下面几个字段: title 字段 - 菜单标题 url 字段 - 菜单路由,对应 app-routing.module.ts 完整 path icon 字段 - 标题前小图标,二级标题没有...小到控制用户一个按钮展示等,但是本质来说,都是对后端接口请求限制。比如,你请求一个列表,但是你没有权限,那么你就请求不了,报 401 错误

    80220

    AngularDart4.0 指南- 用户输入 顶

    绑定到这些事件提供了从用户获得输入方法。 要绑定到DOM事件,请在括号包围DOM事件名称,并为其分配引用模板语句。...虽然这简化了一些代码,但使用更具体类型可以揭示事件对象属性并防止愚蠢错误。...以下示例使用模板引用变量在简单模板实现按键回送。...虽然该声明没有任何用处,但符合Angular要求,所以Angular将更新屏幕。 使用模板引用变量到达输入框比通过$ event对象更容易。...失去焦点(blur)事件 在前面的示例,如果用户在没有首先按下Enter情况下单击页面上其他位置,则输入框的当前状态将丢失。 只有当用户按下Enter时,组件value属性才会更新。

    3.5K00

    Android 调试小技巧

    最近在调试公司Android项目时,遇到一些问题,及时做个总结,以免后面再遇到这类问题时再浪费时间。 高低版本 API 兼容 在高版本 API 方法前加 @TargetApi(API号)。...compile project(':ModuleName') 在工程引用jar包 将所有需要引用 jar 包存放到一个位置。...,可以修改gradle.properties,在该文件添加下在配置即可解决aapt2问题。... app 目录 build.gradle文件 dependencies里配置项有可能有冲突。可以按照 Android stuido里提示信息进行修改即可。...安装包内容是老 CMake编译时内部会使用缓存,所以很容易出现这种情况。可以通过删除Native项目中 build目录,主动让 CMake重新编译。

    84120
    领券