angular2动态增加一行组件和删除组件示例改进版(增加了添加数据、清空数据、打印数据功能)

初始效果

点击添加行

 点击添加数据

 点击打印数据

 点击清空数据

TS 部分代码讲解

/**

* 获取数组对象

*/

get arrayList()

{

return this.fg.get(‘arrayList‘) as FormArray;

}

获取的 HTML页面的控件arrayList 对象

/**

* 添加数据

*/

addData(){

this.arrayList.controls.forEach((item,index)=>{

//此处的this.arrayList出自 get arrayList()方法获得的FormArray 对象

通过FormArray的controls属性来获取arrayList控件下的组件

angular2源码截图

item.patchValue({

firstName:‘zhangsan‘+index,

age:20+index,

profession:‘java‘,

})

});

}

关于patchValue的解释参照 angular2的官方文档链接

https://angular.cn/guide/reactive-forms#patching-the-model-value

1.导入模块

import { ReactiveFormsModule } from ‘@angular/forms‘;   红线标记为需要引入代码

2.HTML 部分

HTML源码

<form [formGroup]="fg" >

<table class="table table-bordered">

<tr><td>姓名</td><td>年龄</td><td>职业</td><td></td></tr>

<ng-container formArrayName=‘arrayList‘>

<ng-container *ngFor="let row of arrayList.controls;let i =index">

<tr>

<ng-container [formGroup]="row">

<td><input type="text" class=‘form-control‘  formControlName="firstName"></td>

<td><input  type="text"class=‘form-control‘  formControlName="age"></td>

<td><input  type="text" class=‘form-control‘  formControlName="profession"></td>

<td><button class=‘form-control‘ (click)="delBtn(i)">删除</button></td>

</ng-container>

</tr>

</ng-container>

</ng-container>

</table>

</form>

<button (click)="addBtn()">添加行</button>&nbsp;&nbsp;

<button (click)="addData()">添加数据</button>&nbsp;&nbsp;

<button (click)="printData()">打印数据</button>&nbsp;&nbsp;

<button (click)="clearData()">清空数据</button>

3.ts部分源码

import { Component } from ‘@angular/core‘;

import { FormGroup, FormBuilder ,FormArray } from ‘@angular/forms‘;

@Component({

selector: ‘app-news‘,

templateUrl: ‘./news.component.html‘,

styleUrls: [‘./news.component.css‘]

})

export class NewsComponent  {

constructor(private formBuilder: FormBuilder) { }

public fg:FormGroup =this.formBuilder.group(

{

// 创建数组对象

arrayList:this.formBuilder.array([])

}

);

/**

* 获取数组对象

*/

get arrayList()

{

return this.fg.get(‘arrayList‘) as FormArray;

}

/**

* 创建一行组件

*/

createRow(){

return this.formBuilder.group({

firstName:[‘‘],

age:[‘‘],

profession:[‘‘],

});

}

/**

* 增加一行事件

*/

addBtn(){

this.arrayList.push(this.createRow());

}

/**

* 删除一行事件

*/

delBtn(i:number){

this.arrayList.removeAt(i);

}

/**

* 添加数据

*/

addData(){

this.arrayList.controls.forEach((item,index)=>{

item.patchValue({

firstName:‘zhangsan‘+index,

age:20+index,

profession:‘java‘,

})

});

}

/**

* 打印数据

*/

printData(){

console.log(this.fg.get(‘arrayList‘).value);

}

/**

* 清空数据

*/

clearData(){

this.arrayList.controls.forEach(item=>{

item.patchValue({

firstName:‘‘,

age:‘‘,

profession:‘‘,

})

})

}

}

原文地址:https://www.cnblogs.com/kukai/p/12180565.html

时间: 2024-10-09 23:27:10

angular2动态增加一行组件和删除组件示例改进版(增加了添加数据、清空数据、打印数据功能)的相关文章

利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)

原文:利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习) Mono.Cecil是一个强大的MSIL的注入工具,利用它可以实现动态创建程序集,也可以实现拦截器横向切入动态方法,甚至还可以修改已有的程序集,并且它支持多个运行时框架上例如:.net2.0/3.5/4.0,以及silverlight程序 官方地址:http://www.mono-project.com/Cecil 首先,我先假想有一个这样的商业组件,该组件满足了以下条件: 1. 该程序集的代码被混淆过了 2. 该程序

打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件

第三章 建议学习时间8小时      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demoback.lalalaweb.com  前台:demo.lalalaweb.com 演示过程中可能会发现bug,希望即时留言反馈,谢谢 源码下载:https://github.com/sutianbinde/classweb               //不是全部的代码,每次更新博客才更新代码 学

表格增加一行/删除一行

1,点击按钮,表格增加/删除一行,表格可编辑 HTML: <div class="handle_tab_box clearfix"> <button class="removeRow_btn" onclick="delrow()">删除</button> <button class="addRow_btn" onclick="addrow()">增加</

vue父组件向子组件动态传值的两种方法

在一些项目需求中需要父组件向子组件动态传值,比如我这里的需求是,父组件动态通过axios获取返回的图片url数组然后传给子组件,上传图片的子组件拿到该数组后进行遍历并展示图片 方法有两种, 方法一: props传值,这里注意一个问题,传过来的值需要用watch监听并赋值,否则这里获取到的是空数组   父组件: <uploadImg :width="200" :height="200" name="productImage" size=&qu

VUE里子组件获取父组件动态变化的值

在VUE里父组件给子组件间使用props方式传递数据,但是希望父组件的一个状态值改变然后子组件也能监听到这个数据的改变来更新子组件的状态. 场景:子组件通过props获取父组件传过来的数据,子组件存在操作传过来的数据并且传递给父组件. 比如想实现一个switch开关按钮的公用组件: 1.父组件可以向按钮组件传递默认值. 2.子组件的操作可以改变父组件的数据. 3.父组件修改传递给子组件的值,子组件能动态监听到改变. 比如父组件点击重置,开关组件的状态恢复为关闭状态: 方法1: 1.因为存在子组件

Vue父组件向子组件传递一个动态的值,子组件如何保持实时更新实时更新?

原文:https://blog.csdn.net/zhouweixue_vivi/article/details/78550738 2017年11月16日 14:22:50 zhouweixue_vivi 阅读数:29918 最近用vue做一个新项目,经历了各种折磨,每次遇到问题都想大喊,格劳资上JQuery,氮素肯定是不行的,今天遇到一个小问题,Vue父组件向子组件传递一个动态的值,子组件只能获取初始值,不能实时更新? 这就有点折磨人了,设想的是,父组件发生变化获取数据,动态传递给子组件,子组

Vue组件的操作-自定义组件,动态组件,递归组件

作者 | Jeskson 来源 | 达达前端小酒馆 v-model双向绑定 创建双向数据绑定,v-model指令用来在input,select,checkbox,radio等表单控件.v-model指令在内部使用不同的属性为不同的输入元素抛出不同的事件. v-mdel指令实现数据的双向绑定: <div> 用户名:<input type="text" v-model="name"> </div> 输入用户名是:{{name}} &l

【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件

博客地址 : http://blog.csdn.net/shulianghan/article/details/41520569 代码下载 : -- GitHub : https://github.com/han1202012/WheelViewDemo.git -- CSDN : http://download.csdn.net/detail/han1202012/8208997 ; 博客总结 : 博文内容 : 本文完整地分析了 WheelView 所有的源码, 包括其适配器类型, 两种回调接

JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)

前言:前面介绍了两篇关于bootstrap table的基础用法,这章我们继续来看看它比较常用的一些功能,来个终结篇吧,毛爷爷告诉我们做事要有始有终~~bootstrap table这东西要想所有功能覆盖似乎不太现实,博主挑选了一些自认为比较常用的功能在此分享给各位园友.源码也在这篇统一给出.好了,不多说废话,开始我们的干货之旅吧. bootstrap table系列: JS组件系列——表格组件神器:bootstrap table JS组件系列——表格组件神器:bootstrap table(二