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

Angular 4/ Reactive Forms -在子组件中添加控件

Angular 4是一种流行的前端开发框架,它提供了一种结构化的方法来构建Web应用程序。Reactive Forms是Angular中的一种表单处理机制,它使用响应式编程的概念来处理表单数据。

在Angular 4中,在子组件中添加控件可以通过以下步骤完成:

  1. 在父组件中创建一个FormGroup对象,并将其传递给子组件。FormGroup是一个表单控件组的容器,它可以包含多个FormControl对象。
  2. 在子组件中,使用@Input装饰器接收父组件传递的FormGroup对象。
  3. 在子组件的模板中,使用FormGroup对象的属性来绑定表单控件。可以使用FormControlName指令将表单控件与FormGroup中的属性关联起来。
  4. 在子组件中,可以使用FormGroup对象的addControl方法来动态添加表单控件。该方法接受一个控件名称和一个FormControl对象作为参数。

下面是一个示例代码:

父组件:

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

@Component({
  selector: 'app-parent',
  template: `
    <form [formGroup]="form">
      <app-child [form]="form"></app-child>
    </form>
  `
})
export class ParentComponent {
  form: FormGroup;

  constructor() {
    this.form = new FormGroup({
      name: new FormControl(''),
      email: new FormControl('')
    });
  }
}

子组件:

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

@Component({
  selector: 'app-child',
  template: `
    <div [formGroup]="form">
      <input formControlName="name" placeholder="Name">
      <input formControlName="email" placeholder="Email">
      <button (click)="addControl()">Add Control</button>
    </div>
  `
})
export class ChildComponent {
  @Input() form: FormGroup;

  addControl() {
    this.form.addControl('newControl', new FormControl(''));
  }
}

在上面的示例中,父组件创建了一个FormGroup对象,并将其传递给子组件。子组件接收到FormGroup对象后,在模板中使用FormControlName指令绑定了两个表单控件(name和email)。在子组件的addControl方法中,使用FormGroup对象的addControl方法动态添加了一个名为newControl的表单控件。

这样,当点击"Add Control"按钮时,子组件中的addControl方法会被调用,新的表单控件会被添加到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
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

响应式表单 建立表单 由组件隐式的创建表单控件实例 组件类中进行显示的创建控件实例 表单验证 指令 函数 表单数据发生变更时,模板驱动表单通过修改 ngModel 绑定的数据模型来完成数据更新,...,从而生成错误信息列表 进行用户输入数据有效性验证时,控件上通过添加一个模板引用变量来暴露出 ngModel,从而在模板获取到指定控件的状态信息,之后就可以通过获取错误信息列表来进行反馈 <div...4.3.2、通过 FomGroup 组合多个控件 一个表单不可能只有一个控件,通过组件构造 FormGroup 实例来完成对于多个表单控件的统一管理 使用 FormGroup 时,同样组件定义一个属性用来承载控件组实例...,设定规则时,需要将模板控件名对应的数据值的第二个参数改为验证的规则 响应式表单,数据源来源于组件类,因此应该在组件类中直接把验证器函数添加到对应的 FormControl 的构造函数上。...模板驱动表单,因为不是直接使用的 FormControl 实例,因此这里应该在模板上添加一个自定义的指令来完成对于控件数据的校验 使用 angular cli 创建一个用来进行表单验证的指令 ng

18.9K20

angular面试题及答案_angular面试

:angular初始化组件及其组件的视图之后调用,只调用一次,只适用于组件 ngAfterViewChecked:每次做完组件视图和视图的变更检测之后调用,只适用于组件 ngOnDestroy:...,主动获取组件的数据和方法(父组件中使用) 4....像p标签或者h1标签,标记之间可以添加内容,eg: this is a paragraph.那我们如果想在angular的标签之间添加内容呢,例如在</app-test...angular路由器使用base href 作为组件、模板的基地址,开发期间,通常会在index.html所在目录启动服务器,所以这个目录就是根目录,所以可以index.html 的顶部添加<base...最小化组件类的代码 不易于单元测试 Reactive Forms (响应式表单) 的特点 比较灵活 适用于复杂的场景 简化了HTML模板的代码,把验证逻辑抽离到组件

10.9K120

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

原文链接:Never again be confused when implementing ControlValueAccessor in Angular forms 如果你正在做一个复杂项目,必然会需要自定义表单控件...,当 Angular 组件模板遇到 input 或 textarea DOM 原生控件时,会使用DefaultValueAccessor 指令: @Component({ selector:...表单控件是如何数据同步的(译者注:作者贴的可能是 Angular v4.x 的代码,v5 有了点小小变动,但基本相似): export function setUpControl(control: FormControl...组件封装器 由于 Angular 为所有默认原生控件提供了控件值访问器,所以封装第三方插件或组件时,需要写一个新的控件值访问器。...index.html 添加全局依赖: <script src="https

3.7K20

AngularDart4.0 指南- 表单 顶

使用跟踪控件状态的特殊CSS类提供视觉反馈。 向用户显示验证错误并启用/禁用表单控件。 使用模板引用变量HTML元素之间共享信息。 您可以Plunker运行实例(查看源代码)并从那里下载代码。...模板驱动的形式 您可以通过使用本页描述的特定于表单的指令和技术Angular模板语法编写模板来构建表单。 您也可以使用响应式(或模型驱动)方法来构建表单。...添加angular_forms Angular表单功能位于angular_forms,该库位于其自己的包。 将该包添加到pubspec依赖项: ?...你还没有使用Angular。 没有绑定或额外的指令,只是布局。 模板驱动的表单,如果已经导入了angular_forms库,则不必为了使用库功能而对标记执行任何操作。...您将在表单添加一个select,并使用ngFor(先前“显示数据”页面中看到的一种技术)将选项绑定到powers列表。

17.4K30

Angular5.0.0新特性

5.0版本Angular开发团队添加了ServerTransferStateModule(与之对应的BrowserTransferStateModule),这个模块允许你服务端生成模块信息并传输到客户端...此处另一个改变是AngularUniversal团队添加了Domino渲染工具,Domino的加入意味着我们服务器端上下文中将可以支持更多的DOM操作,改进了对第三方JS和组件库的支持。...4.国际化号码、日期和货币管道   Angular5已经建立了新的号码,日期和货币管道,增加了跨浏览器的标准化实现,消除国际化不同环境的差异。...9.CLI v1.5   Angular CLI v1.5版本已经添加了对5.0版本的支持,后期将会把v5.0.0作为CLI的默认版本。...ngModelOptions]="{updateOn: 'blur'}" or <form [ngFormOptions]="{updateOn: 'submit'}" Reactive Forms

1.7K10

AngularDart4.0 英雄之旅-教程-05多组件

您不能在一个组件之上填充所有功能; 这是不可维护的。 您需要将其分解为组件,每个子组件都专注于特定的任务或工作流程。 最终,AppComponent可以成为托管这些组件的简单shell。...@Component注解提供组件Angular元数据。 CSS选择器名称hero-detail将与组件的模板中标识该组件的元素标签相匹配。...将该属性与必要的导入一起添加到HeroDetailComponent类。...就像您为内建的Angular指令所做的那样,通过将其列元数据指令列表,告诉Angular关于英雄详细信息组件。...您学习了如何使组件接受输入。 您学会了 directives列表声明应用程序指令。 您学会了将父组件绑定到组件。 你的应用应该看起来像这个实例(查看源代码)。

1.7K10

Angular系列教程-第四节

1.表单 Angular 提供了两种不同的方法来通过表单处理用户输入:响应式表单和模板驱动表单。...两者都从视图中捕获用户输入事件、验证用户输入、创建表单模型、修改数据模型,并提供跟踪这些更改的途径 使用’@angular/forms’库的FormGroup, FormControl,FormArray...,FormBuilder 等类构建出的数据对象就是响应式的表单,响应式的表单,我们会在数据源里面进行各种操作,像添加校验等,html文件中使用 formGroup,formGroupName,formControlName...总结 响应式表单是动态的,模板驱动表单是固定的 2.响应式表单使用 注册ReactiveFormsModule 组件导入FormControl 模板中注册组件 控件的值(获取setvalue...结构型指令 — 通过添加和移除 DOM 元素改变 DOM 布局的指令,比如ngfor、ngif 属性型指令 — 改变元素、组件或其它指令的外观和行为的指令,比如ngstyle 6.属性型指令 6.1

2.8K50

Angular2 VS Angular4 深度对比:特性、性能

依赖注入模块化开发和元素隔离方面非常有帮助,但它的实现一直受到Angular 1.x的困扰。Angular2解决了这个问题,另外还添加了一些缺少的功能,如注入以及生命周期/范围控制。...动态载入: 这是之前的Angular版本均不具备的功能,Angular2包含了这个功能,即使开发人员忙碌时,也能够添加新的指令或控件。 模板: Angular2,模板编译过程是异步的。...指令: Angular2提供了三种指令:  组件指令:通过将逻辑封装在HTML,CSS和JavaScript,从而使得组件可复用。...设计: 所有这些逻辑都是使用管道架构创建的,这使得将自己的操作添加到管道或删除默认操作变得非常简单。此外,它的异步字符允许开发人员管道,实现对用户进行身份验证或加载控件信息的服务器请求。...Angular4 Angular4 的特性和性能 相比于Angular 2,Angular4的功能列表添加了许多新功能,同时还有一些旧功能的改进。

8.7K20

纯前端控件集 WijmoJS 2018V2发布,React、Vue和Angular更易用

安装后,它会在每个Angular 框架下的WijmoJS组件上方添加“Wijmo Designer ...”操作。单击操作按钮后,它将打开一个设计界面,用于自定义该特定组件。...或者,还可以VSCode的扩展管理器搜索“wijmo”并从那里安装。 安装后重新加载VSCode。 然后打开一个使用WijmoJS 控件Angular应用程序并尝试启动设计器。...WijmoJS 本次更新为Vue V2支持增加了很多不错的功能。比如,WijmoJS 组件现在可以动态场景中正确工作,例如v-for和v-if指令。...组件直接从HTMLElementclass继承,底层 WijmoJS 类实例可通过组件的特殊控件属性访问。 可以使用组件元素上的属性定义 WijmoJS 类属性。...随着新版本上线,WijmoJS 添加了Web Components In Angular示例,演示了如何在Angular应用程序中使用 WijmoJS Web组件

7K20

Angular进阶:理解RxJSAngular应用的高效运用

RxJS(Reactive Extensions for JavaScript)是JavaScript的一个响应式编程库,特别适用于处理异步数据流。...Angular应用,RxJS的高效运用主要体现在:异步操作处理RxJS的核心优势在于处理异步操作,如HTTP请求、定时任务、事件监听等。...Angular,你可以使用HttpClient模块配合RxJS的Observable来发起HTTP请求,这使得请求和响应的管理变得简洁且易于理解。...this.http.get('https://api.example.com/data'); }}状态管理RxJS的Subjects和BehaviorSubjects可以作为轻量级的状态管理工具,帮助你组件间共享和管理状态...import { FormBuilder, FormGroup, FormControl } from '@angular/forms';import { debounceTime } from 'rxjs

13010

Angular2 :从 beta 到 release4.0 版本升级总结

它标记出该模块拥有的组件、指令和管道, 并把它们的一部分公开出去,以便外部组件使用它们。 它可以向应用的依赖注入器添加服务提供商。 具体请参考官方文档。.../common'; import {FormsModule} from '@angular/forms'; // 引入公用组件 import {SomeService} from '....组件迁移后,无法正确订阅事件 原因:angular(v4.0.0)依赖注入,若在不同地方声明provider,则会创建不同的实例。...解决办法:目前路由事件结束(NavigationEnd)时,手动更新组件状态。 的内嵌样式失效。"...webstorm里,更改文件不能在浏览器更新输出。 原因:webstorm里面默认启用”safe write”,将保存先存到临时文件。

8.1K00

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

前言 表单在整个系统的作用相当重要,这里主要扯下响应表单的实现方式。...首先需要操作表单的模块引入这两个模块; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; ---- 表单控件响应的几种状态...()函数内,点击提交的时候对整个表单一一去判断,传统方式基本这样 每个控件输入的时候对应去触发对应的事件做校验,比如[ngModelChange]来处理双向绑定的值校验 ---- 数据驱动(Reactive.../core'; import { FormGroup, Validators, FormBuilder } from '@angular/forms'; // 引入表单的一些特性 import { Router..., FormBuilder } from '@angular/forms'; // 引入表单的一些特性 // 动画 import { fadeIn } from '../../../../..

3.8K20

vue3,后台管理列表页面各组件之间的状态关系 管理类的功能:查询分页添加、修改删除

() 先引入状态,然后组件注册(也就是注入)状态,然后组件就可以获取状态。...dataList, // 父组件获得列表 dataListState // 组件获得状态 } } 管理类的功能: 父组件注册状态 组件获取状态 定义列表数据的容器 各种监听 事件总线...父组件注册状态 因为使用的是局部的状态,并不是全局状态,所以需要使用的时候,首先需要在父组件里面注册一下。...定义列表数据的容器 列表数据并没有状态里面定义,而是管理类里面定义的,因为主要列表组件才需要这个列表数据,其他的组件并不关心列表数据。...文件结构 基础功能搭建好了之后,剩下的就简单了,建立组件设置模板、控件组件和使用状态即可。 总体结构如下: ? 列表状态的使用 基础工作做好之后我们来看看,各个组件里面是如何使用状态的。

1.9K20
领券