码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-01-11 18:46:39      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:type   const   删除   str   截图   row   app   打印   container   

初始效果

技术图片

点击添加行

技术图片

 点击添加数据

技术图片

 点击打印数据

技术图片

 点击清空数据

技术图片

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的官方文档链接

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:‘‘,
     })
   })
 }
}
 

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

标签:type   const   删除   str   截图   row   app   打印   container   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!