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

Angular 2 Reactive Forms -如何显示与输入元素不同的FormArray控件

Angular 2 Reactive Forms中,如果要显示与输入元素不同的FormArray控件,可以通过以下步骤实现:

  1. 在组件的HTML模板中,定义一个<form>标签作为表单的容器。
  2. 在组件的Typescript文件中,创建一个FormGroup对象来表示整个表单。
  3. 在该FormGroup对象中,创建一个FormArray对象,用于表示FormArray控件。
  4. 在HTML模板中,使用Angular的表单指令(如formGroupformArrayName等)来绑定表单控件与组件中的相应属性。
  5. 在组件的Typescript文件中,编写逻辑代码来动态操作FormArray对象,例如添加、删除、更新元素等。

以下是一个完整的示例:

HTML模板文件(component.html):

代码语言:txt
复制
<form [formGroup]="myForm">
  <div formArrayName="myFormArray">
    <div *ngFor="let control of myFormArray.controls; let i=index">
      <input type="text" [formControlName]="i">
    </div>
  </div>
</form>

Typescript文件(component.ts):

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

@Component({
  selector: 'app-my-component',
  templateUrl: 'component.html',
})
export class MyComponent implements OnInit {
  myForm: FormGroup;
  
  constructor(private formBuilder: FormBuilder) { }
  
  ngOnInit() {
    this.myForm = this.formBuilder.group({
      myFormArray: this.formBuilder.array([]),
    });
    
    // 添加初始元素
    this.addFormArrayControl();
  }
  
  // 添加新的FormArray控件
  addFormArrayControl() {
    const control = this.formBuilder.control('');
    this.myFormArray.push(control);
  }
  
  // 删除指定位置的FormArray控件
  removeFormArrayControl(index: number) {
    this.myFormArray.removeAt(index);
  }
  
  // 获取FormArray对象
  get myFormArray() {
    return this.myForm.get('myFormArray') as FormArray;
  }
}

在上述示例中,我们创建了一个名为myFormFormGroup对象,其中包含了一个名为myFormArrayFormArray对象。通过formArrayName指令和formControlName指令,我们将FormArray中的每个元素与输入框进行绑定。

为了动态操作FormArray对象,我们提供了addFormArrayControl()方法和removeFormArrayControl()方法来添加和删除元素。这样用户就可以根据需要动态增加或减少输入框。

此外,我们还定义了一个myFormArray的getter方法,用于方便地获取FormArray对象。

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

  • 云产品:腾讯云云服务器(CVM)- 提供可扩展的计算容量,用于运行各类应用程序和服务。产品链接
  • 云产品:腾讯云数据库MySQL版(CMYSQL)- 提供可靠、安全、高性能的MySQL数据库服务。产品链接
  • 云产品:腾讯云对象存储COS(COS)- 提供高可靠性、低延迟、强安全性的分布式对象存储服务。产品链接 请注意,这里的产品链接只是示例,并非真实的腾讯云产品链接。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

一、Overview angular 入坑记录笔记第三篇,介绍 angular 中表单控件相关概念,了解如何angular 中创建一个表单,以及如何针对表单控件进行数据校验。...四、Step by Step 4.1、表单简介 用来处理用户输入,通过从视图中捕获用户输入事件、验证用户输入是否满足条件,从而创建出表单模型修改组件中数据模型,达到获取用户输入数据功能 模板驱动表单...响应式表单 建立表单 由组件隐式创建表单控件实例 在组件类中进行显示创建控件实例 表单验证 指令 函数 在表单数据发生变更时,模板驱动表单通过修改 ngModel 绑定数据模型来完成数据更新,...4.2.3、数据有效性验证 某些时候需要对于用户输入信息做有效性验证,此时可以在控件上添加上原生 HTML 表单验证器来设定验证条件,当表单控件数据发生变化时,angular 会通过指令方式对数据进行验证...对于模板驱动表单,同样是采用自定义指令方式进行跨字段交叉验证,单个控件验证不同,此时需要将指令添加到 form 标签上,然后使用模板引用变量来获取错误信息 import { Directive

18.9K20

Angular系列教程-第四节

1.表单 Angular 提供了两种不同方法来通过表单处理用户输入:响应式表单和模板驱动表单。...两者都从视图中捕获用户输入事件、验证用户输入、创建表单模型、修改数据模型,并提供跟踪这些更改途径 使用’@angular/forms’库中FormGroup, FormControl,FormArray...它会控制那些带有 ngModel 指令和 name 属性元素,监听他们属性。...总结 响应式表单是动态,模板驱动表单是固定 2.响应式表单使用 注册ReactiveFormsModule 组件导入FormControl 模板中注册组件 控件值(获取setvalue...结构型指令 — 通过添加和移除 DOM 元素改变 DOM 布局指令,比如ngfor、ngif 属性型指令 — 改变元素、组件或其它指令外观和行为指令,比如ngstyle 6.属性型指令 6.1

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

    首先需要操作表单模块引入这两个模块; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; ---- 表单控件响应几种状态...; 在Submit()函数内,在点击提交时候对整个表单一一去判断,传统方式基本这样 每个控件输入时候对应去触发对应事件做校验,比如[ngModelChange]来处理双向绑定值校验 ---- 数据驱动...(Reactive Form) 响应式表表单:原理是一开始就构建整个表单,表单值通过特殊指令formControlName一一关联(类似ngModel); 相关名词: FormGroup: 用来追踪表单控件有效状态及值...FormArray()),FormGroup()内置多种校验方式 formControlName: 同步FormGroup构建表单内相同字段值!...// v4+ , 第一位''代表这个元素初始化构建为空值,类似未输入状态 // 'UserName': ['', Validators.compose([Validators.minLength

    3.8K20

    Angular8稳定版修改概述

    但这是如何工作? 基本上,Angular将使用polyfill构建其他文件,并且它们将注入nomodule 属性。...改进了模板类型检查(V9)。 较小捆绑尺寸(V9)(如果您错过了I / O 19,Vikram Subramanian显示了一个4.3 KB版本应用程序)。 向后兼容性。...正如Igor Minar所解释那样,Bazel已经在内部使用了很长时间,现在可供所有人使用。您可以参考Bazel文档,并了解如何将其Angular一起使用。...如果要触发一个表单组中所有控件验证,这个方法将是非常有用。...中清除所有元素 以前要删除所有元素formArray 我们必须循环删除第一个元素直到空: while(formArray.length){ formArray.removeAt(0); } 现在就不需要那样操作了

    4.5K20

    AngularDart4.0 指南- 表单 顶

    一路上你将学习如何: 用组件和模板构建一个Angular表单。 使用ngModel创建读取和写入输入控制值双向数据绑定。 跟踪状态变化和表单控件有效性。...p模板输入变量在每次迭代中是不同power; 您使用插值语法显示其名称。 ngModel双向数据绑定 现在运行应用程序有点令人失望。 ? 你没有看到英雄数据,因为你还没有绑定到英雄。...你知道如何从早期页面做到这一点。 显示数据教导属性绑定。 用户输入显示如何使用事件绑定监听DOM事件以及如何使用显示值更新组件属性。 现在您需要同时显示,聆听和提取。...每个input元素都有一个ngControl指令,Angular表单需要用这个指令在表单上注册控件。 如果您现在运行应用程序并更改每个英雄model属性,表单可能会显示如下: ?...用于验证和表单元素更改跟踪NgControl 指令。 输入控件(通过模板引用变量访问)valid 属性,用于检查控件有效性以及显示/隐藏错误消息。

    17.5K30

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

    :用来获取原生表单控件值更新时通知Angular表单控件更新函数(即,设置当控件接收到 change 事件后,调用函数) registerOnTouched:用来获取通知用户正在交互函数(即,设置当控件接收到...该函数会根据参数值,启用或禁用指定 DOM 元素。 ?...明确来说,那些原生表单控件都有其对应ControlValueAccessor,比如: - DefaultValueAccessor - 用于 text 和 textarea 类型输入控件 - SelectControlValueAccessor...formControl指令实现: // https://github.com/angular/angular/blob/master/packages/forms/src/directives/reactive_directives...4.x 自定义表单控件 【荐】深入Angular自定义表单控件 Angular集成Editor.mdMarkdown编辑器,支持NgModel双向绑定

    5.2K20

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

    然后我将展示如何封装第三方组件作为 Angular 组件,以及如何使用输入输出机制实现组件间通信(译者注:Angular 组件间通信输入输出机制可参考官网文档),最后将展示如何使用 ControlValueAccessor...),你需要把更新值传给这个回调函数,这样对应 Angular 表单控件值也会更新(译者注:这一点可以参考 Angular 它自己写 DefaultValueAccessor 写法是如何把 input...下图是 Angular 表单控件 如何通过 ControlValueAccessor 来和原生表单控件交互(译者注:formControl 和你写或者 Angular 提供 CustomControlValueAccessor...Angular 也为所有原生 DOM 表单元素创建了 Angular 表单控件(译者注:Angular 内置 ControlValueAccessor): Accessor Form Element...交互式表单控件 上面的实现还不能让我们自定义 slider 控件父组件交互,所以还得使用输入/输出绑定来是实现组件间数据通信: export class NgxJquerySliderComponent

    3.8K20

    angular面试题及答案_angular面试

    ngOnInit : 在angular 第一次显示数据绑定和设置指令、组件输入属性之后,初始化指令、组件 所以从angular生命周期看,constructor是执行在先 所以既然ngOnchanges...如何优化Angular 2应用程序来获得更好性能? 1)考虑AOT编译。 2)确保应用程序已经经过了捆绑,uglify和tree shaking。...最小化组件类代码 不易于单元测试 Reactive Forms (响应式表单) 特点 比较灵活 适用于复杂场景 简化了HTML模板代码,把验证逻辑抽离到组件类中...方便跟踪表单控件变化 易于单元测试 33....|Function|string 类型选择器 不同点 ContentChild 用来从通过 Content Projection 方式 (ng-content) 设置视图中获取匹配元素

    11.1K120

    Angular 6.x 快速入门

    基础知识 ngIf 指令简介 该指令用于根据表达式值,动态控制模板内容显示隐藏。它与 AngularJS 1.x 中 ng-if 指令功能是等价。...组件,开发一个功能,即可以让用户动态控制技能信息显示隐藏。...1.x 中表单 ) Reactive Forms - 响应式表单 本小节主要介绍模板驱动式表单,接下来我们来演示如何通过表单来为我们之前创建 UserComponent 组件,增加让用户自定义技能功能...router-outlet 指令 该指令用于告诉 Angular 在哪里加载组件,当 Angular 路由匹配到响应路径,并成功找到需要加载组件时,它将动态创建对应组件,并将其作为兄弟元素,插入到...router-outlet 元素中。

    14.1K20

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

    NgModel - [(ngModel)]形成元素双向绑定 在开发数据输入表单时,通常都会显示数据属性,并在用户进行更改时更新该属性。 使用NgModel指令进行双向数据绑定使得这一切变得简单。...谁可以记住要设置哪个元素属性以及哪个元素事件发出用户更改? 如何输入框中提取当前显示文本,以便更新数据属性? 谁想每一次都看看?...Angular为所有基本HTML表单元素提供值访问器,Forms指南展示了如何绑定到它们。...'none' : 'block'">Hide with style 隐藏一个元素用NgIf去除一个元素是完全不同。 当你隐藏一个元素时,该元素及其所有的后代仍然保留在DOM中。...模板引用变量警告说明 模板引用变量(#phone)模板输入变量(let phone)不同,如您在*ngFor中可能看到那样。 了解“结构指令”指南中差异。 引用变量范围是整个模板。

    30K20

    Klee:用 C++ 实现数据驱动开发

    而我们在实际项目的开发过程中发现,同一个功能,综合考虑前期开发、后期 bug UI 还原等阶段的人力投入,使用 Web 技术栈 来实现前端页面,研发效率大约是 平台原生开发 2 到 3 倍。...开发者只需要用代码或其他方式描述各个界面元素数据之间关系,数据流向、界面的维护工作将由框架自动处理,大大简化程序员需要关注内容。...直到读了 Vue.js 源码后,才理解了依赖关系是如何在运行时收集维护。...---- RxSwift 对比 同为 Native 数据驱动开发框架,Klee 从设计思路上主流 RxSwift 等框架有所不同。...多输入源 由于 Klee 依赖关系是由框架自动建立,不需要开发者维护,在多输入情况代码仍然非常简洁。

    2.3K30

    Xamarin.Forms入门-使用 Xamarin.Forms 来创建跨平台用户界面

    Xamarin.Forms 通过使用平台原生控件来渲染用户界面,使用 Xamarin.Forms App在外观上平台完全一致。...Layout - 布局或者容器控件 Cell - 表格或者列表控件子项目 常用控件: Xamarin.Forms 控件 描述 Label 只读文本展示控件 Entry 单行文本输入框 Button...按钮 Image 图片 ListView 列表控件 Xamarin.Forms有两种不同类型容器控件: Managed Layout - CSS盒模型类似,通过设定子控件位置和大小来进行布局...Unmanaged Layouts - Managed Layout不同,开发人员需要直接设定子控件位置和大小,常见例子就是 AbsoluteLayout。...堆栈式布局元素会按照添加到容器中顺序一个接一个被摆放,堆栈式布局有两个方向:竖直水平方向。 下面的代码会把三个 Label 控件添加到 StackLayout 中去。

    12.9K70

    常用表单元素有哪些_h5新增表单元素属性

    表单控件:包含了具体表单功能项 3. 表单域:容纳所有表单控件和提示信息 常用表单元素,包括: 1. form: 定义供用户输入表单。 2. fieldset: 定义域。...可设置type属性,从而具有不同功能。 6. textarea: 定义文本域(一个多行输入控件),默认可通过鼠标拖动调整大小。 7. button: 定义一个按钮。...,默认为”get”(也可以是post) name:控件名称;value:input控件默认文本值;size:input控件在页面中显示宽度...还有一些新增type属性: 1. search:input会呈现为搜索框(text类型唯一区别在于当鼠标覆盖时尾部出现叉号可快速清除输入内容)。...2. tel:编辑电话号码控件,提交时换行符会自动从输入框中去掉。 3. url:编辑url控件,提交时换行符首位空格都将自动去除。 4. email:可输入一个邮件地址。

    3.4K30

    Reactive UI -- 反应式编程UI框架入门学习 (转载非原创)

    Reactive UI Reactive UI 是一种反应式编程跨平台MVVM框架,支持Xamarin Forms、Xamarin.iOS、Xamarin.Android、Xamarin.Mac、Tizen...2.控件和后台属性对应关系更为直观,提高代码可阅读性。 当然也有一定缺陷,会增加代码量,并且增加View和ViewModel耦合性。...ReactiveCommand定义MVVMLight大同小异。 但是在ReactiveUI中,还有更简单方便定义可通知属性,使用标记[Reactive]。...作用相同,都是_disks强关联并创//建副本集合,在操作数据时候,不直接操作_disks或者Disks,而是对DisksSource或//DisksSource2进行操作,会自动同步到_disk...DiskSource和DiskSource2_disk建立强关联关系两种方式  DisksSource = new();            DisksSource.ToObservableChangeSet

    2.2K20

    angular知识点梳理第二篇-基本语法

    文章目录 前文回顾 基本语法 常见指令 NgModel NgFor NgIf Ng-container 管道 前文回顾 前面已经写了关于angular项目的基本介绍和如何创建一个angular项目,这一篇主要梳理一些...在app.modules.ts中引入forms模块 // 核心模块 import { NgModule } from '@angular/core'; //引入forms模块实现数据双向绑定 import...{ FormsModule } from '@angular/forms'; @NgModule({ declarations: [], // 配置当前模块运行所依赖其他模块 imports...{{item.id}} 运行效果 NgIf NgIf指令是可以控制页面元素显示消失,这里和隐藏要区别开,他效果和css中display:none效果是一致,和visibility...官方的话:为没有 DOM 元素指令安排宿主 管道 管道其实就是具有一定功能函数,主要是一些场景是对字符串什么进行简单转化,当然我们也可以自己使用自定义函数进行数据转换,只是angular给我们提供了一些初始化功能函数管道详细列表

    2.5K30
    领券