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

Angular 2动态表单-实现取消功能

Angular 2动态表单是一种基于Angular 2框架的表单实现方式,它允许开发者在运行时动态地创建和修改表单。实现取消功能是指在用户编辑表单时,可以取消对表单的修改并恢复到之前的状态。

Angular 2动态表单的实现取消功能可以通过以下步骤完成:

  1. 创建动态表单组件:首先,需要创建一个动态表单组件,该组件负责动态生成表单控件和处理表单数据。可以使用Angular的FormBuilder来创建动态表单。
  2. 初始化表单数据:在组件的初始化阶段,可以使用FormBuilder来初始化表单的数据模型,并将其绑定到表单控件上。
  3. 实现取消按钮:在表单中添加一个取消按钮,当用户点击取消按钮时,触发取消操作。
  4. 备份表单数据:在用户开始编辑表单之前,需要备份当前表单的数据,可以使用一个变量来保存原始数据。
  5. 取消操作:当用户点击取消按钮时,将备份的表单数据重新赋值给表单的数据模型,从而恢复表单到之前的状态。

以下是一个示例代码,演示了如何实现取消功能的动态表单组件:

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

@Component({
  selector: 'app-dynamic-form',
  template: `
    <form [formGroup]="form">
      <div *ngFor="let field of fields">
        <label>{{ field.label }}</label>
        <input [formControlName]="field.name" [type]="field.type">
      </div>
      <button (click)="cancel()">取消</button>
    </form>
  `,
})
export class DynamicFormComponent implements OnInit {
  form: FormGroup;
  fields: any[] = [
    { label: '姓名', name: 'name', type: 'text' },
    { label: '年龄', name: 'age', type: 'number' },
    { label: '邮箱', name: 'email', type: 'email' }
  ];
  backupData: any;

  constructor(private fb: FormBuilder) {}

  ngOnInit() {
    this.form = this.fb.group({});
    this.fields.forEach(field => {
      this.form.addControl(field.name, new FormControl(''));
    });
    this.backupData = this.form.value;
  }

  cancel() {
    this.form.patchValue(this.backupData);
  }
}

在上述示例中,我们创建了一个动态表单组件DynamicFormComponent,其中fields数组定义了表单的字段信息,backupData变量用于备份表单数据。在cancel()方法中,我们使用patchValue()方法将备份的数据重新赋值给表单的数据模型,从而实现取消操作。

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

相关·内容

Angular 2 表单(下)

使用 ngModel 进行双向数据绑定 接下来我们使用 ngModel 进行双向数据绑定,通过监听 DOM 事件,来实现更新组件的属性。...修改 app/site-form.component.html ,使用 ngModel 把我们的表单绑定到模型。...每一个 input 元素都有一个 name 属性, Angular表单模块需要使用它为表单注册控制器。 运行以上实例输出结果如下: {{diagnostic}} 只是用于测试时候输出数据使用。...在 angular-forms 目录下创建 forms.css 文件,代码如下: forms.css 文件: .ng-valid[required], .ng-valid.required { border-left...通过 ngSubmit 来提交表单 我们可以使用 Angular 的指令 NgSubmit 来提交表单, 并且通过事件绑定机制把它绑定到 SiteFormComponent.submit() 方法上。

1.7K10
  • Angular 2 表单(上)

    本章节我们将为大家介绍如何使用组件和模板构建一个 Angular 表单。...利用 Angular 模板,我们可以创建各种类型表单,例如:登录表单,联系人表单,商品详情表单等,而且我们也为这些表单的字段添加数据校验。 接下来我们一步步来实现表单功能。...解压后,修改目录名为angular-forms,修改 angular-forms/package.json 文件中的 "name": "angular-quickstart" 为 "name": "angular-forms...创建一个表单组件 每个 Angular 表单分为两部分:一个基于 HTML 的模板,和一个基于代码的组件,它用来处理数据和用户交互。...因为模板驱动的表单有它们自己的模块,所以我们得把 FormsModule 添加到本应用的 imports 数组中,这样我们才能使用表单

    1.5K10

    Angular 表单2--响应式表单, 处理异步数据

    上一节中我们定义了一个响应式表单,其中表单数据是在定义的时候就初始化好的,但是很多时候数据需要异步获取,比如 打开一个编辑页面,需要 请求HTTP拿到数据。...根据数据修改表单中字段的值,最终体现在页面上。 我们改造上一节的例子,成为异步获取数据。...我们先创建service文件, 写一个loadUser方法,模拟HTTP请求 import { Injectable } from '@angular/core'; import { of } from...this.userService.loadUser().pipe( // tap 返回的还是 Observable 这里我们不订阅,我们在模板中使用 async pipe 和 if else 语句实现有条件的显示表单... 你会发现页面打开后一开始显示Loading User...过了大概2s后文字消失并显示表单

    2.8K30

    Angular17 使用 ngx-formly 动态表单

    ngx-formly 是 Angular 应用实现响应式的动态表单框架,不仅支持自动生成表单、易于上手的自定义字段扩展、自定义验证扩展、支持 Formly Schema 和 JSON Schema,还有开箱即用的内置表单主题...启用 Icon 动态加载 Yes # 2. 设置自定义主题文件 Yes # 3. 选择语言环境代码: zh_CN # 4....[a-zA-Z]{2,}$/, }, }, ], }, } 自定义异步验证实现唯一校验: 通过接口实现手机号在系统中唯一使用也是最为常见的一个场景,通过异步验证需要使用将使用同步验证函数时的...}, ] } PS:wrappers 还可以设置为具体的 CardPanel 组件类,但要记得将 CardPanel 组件提前注册后再使用; 创建自定义 Extensions 自定义扩展可以为实现动态表单提供更加便利的帮助...,如在系统中通常相同 key 的表单需要对应相同的 label 字段,如果在前期考虑不好的话容易造成后期维护的困难,这里就可以考虑通过自定义扩展在生成动态表单前自动匹配 label 字段。

    65010

    Vue + Element ui 实现动态表单,包括新增行删除行动态表单验证提交功能

    总结/朱季谦 最近通过Vue + Element ui实现动态表单功能,该功能还包括了动态表单新增行、删除行、动态表单验证、动态表单提交功能,趁热打铁,将开发心得记录下来,方便以后再遇到类似功能时,...简化的页面效果图如下: 最开始,我是用了纯粹的表格形式,后来发现,这种形式在提交的时候,不好对每个输入框做校验,若是表单形式话,就可以直接通过rule设置每个输入框的验证,因此,我就在表格里面嵌套了表单...el-button size="mini" @click="resetForm()">重置 定义一个存储动态表格数据的数组变量...$refs["data"].validate(valid => { //valid为true,表示表单都已经验证通过,若为false,说明存在表单验证失败 if (valid...--表格里面嵌套表单--> <el-form-item :prop="scope.

    5.1K20

    angular页面打印局部功能实现方法思考

    后天api请求都需要带上token信息 前台页面跳转到打印页面后再跳回 1、通过缓存传递数据, 2、路由跳转到打印页面, 3、页面获取缓存数据, 4、调用浏览器打印方法, 5、操作完毕页面后退一步...测试一页A4纸适合页面840px-1225px 打印文件里会自动添加页面标题和日期,下方会自动添加页面地址,不知道如何去掉 在后台生成pdf页面显示自带打印下载功能 1、后台生成PDF文件,返回二进制流...2、在不需要token信息的情况下,并且支持get请求的,可以在浏览器中直接打开该地址。或者通过a标签来实现下载和页面显示。并实现打印功能。...URL.revokeObjectURL(objectUrl); return true; }); } /** * 下载pdf, 如果不传入文件名会再浏览器中打开 实现打印功能

    1.7K20

    android实现RecyclerView列表单功能

    本文实例为大家分享了android实现RecyclerView列表单功能的具体代码,供大家参考,具体内容如下 实现思维 1.首先在一行的xml布局中添加一个选中效果的icon图片,未选中的情况下INVISIBLE...或者GONE 都可以,推荐使用INVISIBLE它会占用布局位置但是不显示,这样可以避免布局中其他控件因为勾选布局的消失而轻微变动位置 2.将适配器类中的onCreateViewHolder方法重写添加按键监听...,onBindViewHolder方法中重写添加判断点击的位置(具体原理请查看下面贴的代码) PS: RecyclerView的实现全部方法就不贴出来了,本人的博客中有RecyclerView各种实现效果文章...2.将适配器类中的onCreateViewHolder方法重写添加按键监听,onBindViewHolder方法中重写添加判断点击的位置(具体原理请查看下面贴的代码) package com.example.lenovo.mydemoapp.myDeviceList...holder.mListSelect.setVisibility(View.INVISIBLE); } } @Override public int getItemCount() { return mList.size(); } } 实现效果

    79810

    纯前端实现保存表单数据功能

    最近在用管理后台配置数据时,发现辛辛苦苦配置好的表单无缘无故地被覆盖,之后了解到由于我们都是在同一台开发机上做开发,难免会遇到其他同学做数据变更时覆盖掉自己的配置数据。...于是我决定在表单配置里增加一项“配置操作”功能来解放自己双手以及惠及他人。 用什么方式保存? 找后端同学去帮忙做保存? 把配置数据都保存到 localStorage? 把配置数据都保存到本地文本?...实现方式 回想时以前做过的一个需求:当用户点击链接时是下载一个PDF文件,而不是直接使用自带的PDF阅读器打开。...但也可以是blobURI、dataURI、fileURI 如果要实现前端保存文本,那么使用dataURI即可实现。...= keyVal.match(rKV); if (pairs) { oForm.append(pairs[1], pairs[2]

    1.9K100

    纯前端实现保存表单数据功能

    本文作者:IMWeb zzbozheng 原文出处:IMWeb社区 未经同意,禁止转载 最近在用管理后台配置数据时,发现辛辛苦苦配置好的表单无缘无故地被覆盖,之后了解到由于我们都是在同一台开发机上做开发...于是我决定在表单配置里增加一项“配置操作”功能来解放自己双手以及惠及他人。 用什么方式保存? 找后端同学去帮忙做保存? 把配置数据都保存到 localStorage? 把配置数据都保存到本地文本?...实现方式 回想时以前做过的一个需求:当用户点击链接时是下载一个PDF文件,而不是直接使用自带的PDF阅读器打开。...但也可以是blobURI、dataURI、fileURI 如果要实现前端保存文本,那么使用dataURI即可实现。...= keyVal.match(rKV); if (pairs) { oForm.append(pairs[1], pairs[2]

    1.3K10

    使用PHP+Redis实现延迟任务,实现自动取消订单功能

    ; (A)业务场景: 1、当一个业务触发以后需要启动一个定时任务,在指定时间内再去执行一个任务(如自动取消订单,自动完成订单等功能2、redis的keyspace notifications 会在key...C)文件代码: phpredis实现订阅Keyspace notification,可实现自动取消订单,自动完成订单。...使监听后台始终运行(订阅) 有个问题 做到这一步,利用 phpredis 扩展,成功在代码里实现对过期 Key 的监听,并在 psCallback()里进行回调处理。开头提出的两个需求已经实现。...使监听后台始终运行 希望像守护进程一样在后台一样, 我是这样实现的。 Linux中有一个nohup命令。功能就是不挂断地运行命令。...总结 以上所述是小编给大家介绍的使用PHP+Redis实现延迟任务,实现自动取消订单功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

    1.2K31

    自定义 WordPress 评论表单功能实现

    我们下面就通过修改这几个参数来实现自定义表单。 自定义 WordPress 评论表单的方法 增加、去掉评论表单中的项目,需要使用 fields 参数。...为表单增加更多文本框 上面说了怎么去掉某个表单中的文本框,如果我觉得表单功能太弱,想要用户在发表评论的时候填写更多的信息呢?我们仍然使用 fields 这个参数来传递。...虽然我们可以在这个文本框中填写信息,但是你点击发送之后,不会有任何变化,因为还没有具体的功能代码接受你这个新建表单的内容。实现这个功能需要用到 comment_post 这个 hook 钩子。...实现这个本文中自定义方法,主题必须使用 comment_form 这个函数生成表单。...了解了基本实现过程,你就可以根据自己的需求新建表单的文本框等信息了,不要忘了编写对应的 CSS 代码让表单更加美观。 ----

    94410

    微搭低代码实现表单打印功能

    @TOC在我们的日常开发场景中,表单打印是一个比较常见的场景,微搭本身不带打印功能,我们需要借助一个第三方的库来实现打印。...,html2canvas库实现的原理是给页面拍一个照片,我们拍哪个区域比较合适呢?...因为考虑到电脑屏幕的大小不同,有的是比较宽有的又比较窄,因此我们设置我们的打印区域的宽度为1080为了实现这个效果,我们给表单容器设置了两层的普通容器作为布局。...(element)这一行代码相当于将获取到的打印元素设置到我们的画布里,其余的代码就是调用了浏览器的打印功能4 实现效果代码设置好之后,我们点击预览功能,然后点击打印按钮就可以看到具体的效果图片图片图片总结本篇带着大家实现了一下表单打印的功能...,表单打印需要是在PC环境,而且要正确的设置打印区域并调用html2canvas库实现,需要的同学照着教程练习一遍吧。

    35420

    干货 | 携程动态表单DynamicForm的设计与实现

    实现阶段2动态表单1.0 乐高表单第二版使用的是半自动化表单,支持动态配置表单控件类型和表单校验等。 配置面板如图: 此版本的表单不支持可视化拖拽,控件自上而下顺序排列。...2)DIY表单界面 运维人员可以通过对控件拖拽,实时编辑的形式,对表单进行自由设计,以达到理想的UI效果。...动态表单一个比较重要的点是需要解决JSON可视化配置,为此表单也开发了table列表式的JSON列表组件,子项的配置就基于嵌套表单实现配置字段,并且能够增删改查条目,excel导入,导出数据。...其他复杂数据类型配置,如["a","b"]和["a","c"],表单提交数据结构即为{a:{b:"",c:""}} 另外一个功能点是解决动态属性间的联动问题,为此表单通过配置联动表达式解决了控件联动问题...四、后续计划 DynamicForm将作为独立的npm模块使用,为其他动态表单场景提供公共功能,打造泛应用动态表单。 DynamicForm代码开源,与社区共同交流与进步。

    2.7K20
    领券