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

Angular 7 Reactive forms -将FormArray中的表单组链接到对象

Angular 7是一种流行的前端开发框架,它提供了一种名为Reactive forms的机制,用于处理表单数据。在Angular中,Reactive forms允许我们以响应式的方式处理表单,并将表单数据链接到对象。

FormArray是Reactive forms中的一种特殊类型,它允许我们在表单中动态添加和删除多个表单组。表单组是一组表单控件的集合,可以包含输入框、复选框、下拉列表等。

要将FormArray中的表单组链接到对象,我们可以使用Angular提供的FormGroup和FormControl类。FormGroup表示一个表单组,它可以包含多个FormControl实例,每个FormControl实例代表一个表单控件。

首先,我们需要创建一个FormGroup实例,用于表示整个表单。然后,我们可以使用FormBuilder类来创建一个FormArray实例,并将其添加到FormGroup中。接下来,我们可以使用FormControl实例来表示每个表单组中的表单控件,并将其添加到FormArray中。

在将表单组链接到对象时,我们可以使用setValue或patchValue方法将表单数据设置到对象中。这些方法接受一个对象作为参数,该对象的属性与表单控件的名称相对应。

下面是一个示例代码,演示了如何将FormArray中的表单组链接到对象:

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

@Component({
  selector: 'app-form',
  template: `
    <form [formGroup]="myForm" (ngSubmit)="onSubmit()">
      <div formArrayName="formArray">
        <div *ngFor="let group of formArray.controls; let i = index" [formGroupName]="i">
          <input formControlName="name" placeholder="Name">
          <input formControlName="email" placeholder="Email">
        </div>
      </div>
      <button type="submit">Submit</button>
    </form>
  `,
})
export class FormComponent {
  myForm: FormGroup;

  constructor(private fb: FormBuilder) {
    this.myForm = this.fb.group({
      formArray: this.fb.array([]),
    });
  }

  get formArray(): FormArray {
    return this.myForm.get('formArray') as FormArray;
  }

  onSubmit() {
    const formData = this.myForm.value;
    console.log(formData);
    // 将formData中的数据链接到对象
    // ...
  }
}

在上面的示例中,我们使用FormBuilder创建了一个FormGroup实例,并将其赋值给myForm属性。然后,我们使用formArrayName指令将FormArray与表单模板中的formArray关联起来。使用ngFor指令遍历formArray.controls,将每个表单组与formGroupName关联起来。

在onSubmit方法中,我们可以通过调用this.myForm.value来获取表单数据。然后,我们可以将这些数据链接到对象中,以便进一步处理。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,我无法给出具体的链接地址。但是,腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,您可以在腾讯云官方网站上找到相关产品和文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

一、Overview angular 入坑记录笔记第三篇,介绍 angular表单控件相关概念,了解如何在 angular 创建一个表单,以及如何针对表单控件进行数据校验。...数据值和一些对于用户行为约束(某个字段必须填啊、某个字段长度超过了长度限制啊)绑定到组件模板,从而完成与用户交互 4.2.1、模板驱动表单双向数据绑定 在根模块引入 FormsModule...,然后控件每一个控件作为属性值添加到实例 import { Component, OnInit } from '@angular/core'; // 引入 FormControl 和 FormGroup...承接 FormGroup 实例属性通过 formGroup 指令绑定到 form 元素,然后控件每一个属性通过 formControlName 绑定到具体对应表单控件上 <form [formGroup...通过使用 formGroupName 属性 FormGroup 控件 FormGroup 实例绑定到控件上 <form [formGroup]='profileForm' (ngSubmit)=

18.9K20

Angular系列教程-第四节

1.表单 Angular 提供了两种不同方法来通过表单处理用户输入:响应式表单和模板驱动表单。...两者都从视图中捕获用户输入事件、验证用户输入、创建表单模型、修改数据模型,并提供跟踪这些更改途径 使用’@angular/forms’库FormGroup, FormControl,FormArray...,FormBuilder 等类构建出数据对象就是响应式表单,在响应式表单,我们会在数据源里面进行各种操作,像添加校验等,在html文件中使用 formGroup,formGroupName,formControlName...等数据和视图进行绑定(需要引入ReactiveFormsModule) 模板驱动表单是我们实例化好一个类数据之后,在html中使用 NgForm 指令后数据和表单进行绑定,使用[(ngModel...)]来表单数据和和视图进行双向绑定,NgForm 指令为 form 增补了一些额外特性。

2.8K50

Angular 2 + 折腾记 :(7) 初步了解表单:模板驱动及数据驱动及脱坑要点

前言 表单在整个系统作用相当重要,这里主要扯下响应表单实现方式。...首先需要操作表单模块引入这两个模块; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; ---- 表单控件响应几种状态...(Reactive Form) 响应式表表单:原理是一开始就构建整个表单表单值通过特殊指令formControlName一一关联(类似ngModel); 相关名词: FormGroup: 用来追踪表单控件有效状态及值.../core'; import { FormGroup, Validators, FormBuilder } from '@angular/forms'; // 引入表单一些特性 import { Router..., FormBuilder } from '@angular/forms'; // 引入表单一些特性 // 动画 import { fadeIn } from '../../../../..

3.8K20

Angular 6.x 快速入门

name = 'Angular'; } 定义数据接口 在 TypeScript 接口是一个非常灵活概念,除了可用于对类一部分行为进行抽象外,也可用于对「对象形状(Shape)」进行描述... ngFor 指令简介 该指令用于基于可迭代对象每一项创建相应模板。它与 AngularJS 1.x ng-repeat 指令功能是等价。...this.showSkills; } } 第六节 - 表单模块简介 Angular 中有两种表单: Template Driven Forms - 模板驱动式表单 (类似于 AngularJS...1.x 表单 ) Reactive Forms - 响应式表单 本小节主要介绍模板驱动式表单,接下来我们来演示如何通过表单来为我们之前创建 UserComponent 组件,增加让用户自定义技能功能...基础知识 导入表单模块 import { FormsModule } from '@angular/forms'; // ...

14.1K20

Angular5.0.0新特性

第一,我们可以应用程序一部分标记为纯应用(pure),改进了现有工具提供摇树优化,删除了应用其它不需要部分。...} ); 7.exportAs多命名支持   5.0提供了组件/指令多命名支持,在对用户不修改代码情况下进行组件迁移操作等非常有用,一个组件导出多个名字,可以让组件已一个新名字来使用而达到不破坏现有代码目的...8.HttpClient   在4.3HttpClient模块被封装在@angular/common,新HttpClient被封装在@angular/common/http,更新Http模块后...同时也更新了.tsconfig更严格遵循TypeScript标准, 10.Angular Forms adds updateOn Blur / Submit   可以使用blur/submit来进行事件更新...ngModelOptions]="{updateOn: 'blur'}" or <form [ngFormOptions]="{updateOn: 'submit'}" Reactive Forms

1.7K10

Angular--Module使用

Angular 是一个用html 和typescript 构建客户端应用平台与框架。 它将核心功能和可选功能作为一TypeScript 库进行实现,你可以把它们导入到你应用。 1....模块Module Angular 应用基本构造块是NgModule, 它为组件提供了编译上下文环境。 Angular 应用就是由一NgModule定义。...一个Angular应用至少有一个用于启动根模块(root module), 根模块通常命名为AppModule,并位于一个名叫 app.module.ts 文件。...app 时 CommonModule @angular/common 当你想要使用NgIf 和NgFor时 FormsModule @angular/forms 当要构建模板驱动表单时 ReactiveFormsModule...@angular/forms 当要构建响应式表单时 RouterModule @angular/router 当要使用路由功能,并且你要用到RouterLink, forRoot() 和.forChild

4.9K40

Angular6自定义表单控件方式集成Editormd

(isDisabled: boolean): void; } writeValue:在初始化时候formControl值传递给原生表单控件(即,模型新值写入视图或 DOM 属性); registerOnChange...:用来获取原生表单控件值更新时通知Angular表单控件更新函数(即,设置当控件接收到 change 事件后,调用函数) registerOnTouched:用来获取通知用户正在交互函数(即,设置当控件接收到...formControl指令实现: // https://github.com/angular/angular/blob/master/packages/forms/src/directives/reactive_directives...jquery 下载Editor.md 需要css、fonts、images、lib、plugins三个文件夹和editormd.min.js文件放入assets(其他位置也可,记得配置第3步对应... 参考资料 Angular 4.x 自定义表单控件 【荐】深入Angular自定义表单控件 Angular集成Editor.mdMarkdown编辑器,支持NgModel

5.2K20

Angular 从入坑到挖坑 - 模块简介

三、Step by Step 3.1、前端模块化 前端模块化是指程序中一相关功能按照一定规则组织在一块,整个模块内部数据和功能实现是私有的,通过 export 暴露其中一些接口(方法)与系统别的模块进行通信...、HttpClientModule 这种 Angular 内置库也都是一个个 NgModule,在开发通过组件、指令、管道、服务或其它代码文件聚合成一个内聚功能块,专注于系统某个功能模块...@angular/common 使用 NgIf、NgFor 之类内置指令 FormsModule @angular/forms 使用 NgModel 构建模板驱动表单 ReactiveFormsModule...@angular/forms 构建响应式表单 RouterModule @angular/router 使用前端路由 HttpClientModule @angular/common/http 发起...通过 export 关键字,模块可以把其中某些对象声明为公共,从而其它 JavaScript 模块可以使用 import 语句来访问这些公共对象 例如下面的示例代码,别的 javascript

1.8K20

angular面试题及答案_angular面试

angular每次销毁组件或指令之前调用,通常用于移除事件监听,退订可观察对象。...此功能用于更改模板上输出;比如字符串更改为大写并在模板上显示它。它还可以相应地更改日期格式。...32.模板驱动表单和 响应式表单比较 Template-Driven Forms (模板驱动表单) 特点 使用方便 适用于简单场景 通过 [(ngModel)] 实现数据双向绑定...最小化组件类代码 不易于单元测试 Reactive Forms (响应式表单) 特点 比较灵活 适用于复杂场景 简化了HTML模板代码,把验证逻辑抽离到组件类...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站立刻删除。

10.9K120

AngularDart4.0 指南- 表单

模板驱动形式 您可以通过使用本页描述特定于表单指令和技术在Angular模板语法编写模板来构建表单。 您也可以使用响应式(或模型驱动)方法来构建表单。...建立 按照设置说明创建一个名为表单新项目。 添加angular_forms Angular表单功能位于angular_forms,该库位于其自己。 将该包添加到pubspec依赖项: ?...你还没有使用Angular。 没有绑定或额外指令,只是布局。 在模板驱动表单,如果已经导入了angular_forms库,则不必为了使用库功能而对标记执行任何操作。...指令exportAs属性告诉Angular如何引用变量链接到指令。 您将name设置为“ngForm”,因为ngModel指令exportAs属性是“ngForm”。...如果没有Angular帮助,你需要做什么才能将按钮启用/禁用状态连接到表单有效性? 对你来说,这很简单: 在(增强表单元素上定义一个模板引用变量。 在多处按钮引用该变量。

17.4K30

Angular 2 表单(上)

利用 Angular 模板,我们可以创建各种类型表单,例如:登录表单,联系人表单,商品详情表单等,而且我们也为这些表单字段添加数据校验。 接下来我们一步步来实现表单功能。...解压后,修改目录名为angular-forms,修改 angular-forms/package.json 文件 "name": "angular-quickstart" 为 "name": "angular-forms...创建一个表单组件 每个 Angular 表单分为两部分:一个基于 HTML 模板,和一个基于代码组件,它用来处理数据和用户交互。...因为模板驱动表单有它们自己模块,所以我们得把 FormsModule 添加到本应用 imports 数组,这样我们才能使用表单。...在 angular-forms 目录下输入以下命令: cnpm install bootstrap --save 打开 index.html 文件,把以下样式链接添加到 : <link

1.5K10

AngularDart4.0 英雄之旅-教程-03英雄编辑器

在“显示数据”页面阅读有关插值更多信息。 Hero对象 英雄需要更多属性。 英雄从文字字符串转换为类。 创建一个具有id和name属性Hero类。...lib/app_component.dart (hero property) Hero hero = new Hero(1, 'Windstorm'); 因为你英雄从字符串更改为对象,请更新模板绑定以引用英雄...在表单和模板语法页面阅读有关ngModel更多信息。 @Component(指令:...) 不幸是,在这个变化之后,应用程序中断!...[(ngModel)]="hero.name" ^^^^^^^^^^^^^^^^^^^^^^^ 虽然NgModel是在angular_forms定义有效Angular指令,但默认情况下不可用。...[formDirectives], ) angular_forms库来源于它自己包,包添加到pubspec依赖项: ?

3.2K10

(转) 别再对 Angular 表单 ControlValueAccessor 感到迷惑

原文链接:Never again be confused when implementing ControlValueAccessor in Angular forms 如果你正在做一个复杂项目,必然会需要自定义表单控件...然后我展示如何封装第三方组件作为 Angular 组件,以及如何使用输入输出机制实现组件间通信(译者注:Angular 组件间通信输入输出机制可参考官网文档),最后展示如何使用 ControlValueAccessor...FormControl 和 ControlValueAccessor 如果你之前使用过 Angular 表单,你可能会熟悉 FormControl ,Angular 官方文档将它描述为追踪单个表单控件值和有效性实体对象...这个对象桥接原生表单控件和 formControl 指令,并同步两者值。...任何一个组件或指令都可以通过实现 ControlValueAccessor 接口并注册为 NG_VALUE_ACCESSOR,从而转变成 ControlValueAccessor 类型对象,稍后我们一起看看如何做

3.7K20

移除 View Engine 转用 Ivy,盘点Angular 12重要更新

用于向 TyperScript 类写入清晰代码 Nullish 合并,现可以与 Angular 模板配合使用。...在更新至 Angular 12 之后,应用会通过 ng update 进行更新并自动切换为新 API。 提供相关工具,可使用最新算法旧版本地化 ID 迁移为新 ID。...严格 null 检查报告各可能为 null 片段。这同样是一项重大变化。 APP-INITIALIZER 令牌类型有所变更,旨在准确反映 Angular 处理返回值类型。同样属于重大变化。...在新版本,您可以通过 BrowserAnimationsModulewithConfig 禁用动画。 向 FormArray 与 FormGroup 引入 emitevent 选项。...在表单,引入最小与最大值验证器。 新版本可导出 HTTP 状态码列表。 向 Angular 语言服务添加一项功能,允许用户直接访问使用模板文件组件实际位置。

4.4K10
领券