Angular2 - 在双向数据绑定(bind)中取消时恢复以前的值

标签 angular typescript

在双向数据绑定(bind)中,如果用户决定取消当前编辑怎么办?如何在 Angular 2 中实现这一点?

考虑以下代码:

import {Component} from 'angular2/core';

@Component({
    selector: 'my-app',
    template: `Name: {{ name  }}<br>
    <input *ngIf='editMode' type="text" [(ngModel)]='name' /><br>
    <button *ngIf='!editMode' (click)='editMode = !editMode' >Edit</button>
    <button *ngIf='editMode' (click)='editMode = !editMode' >Save</button><br>
    <button *ngIf='editMode' (click)='editMode = !editMode' >Cancel</button>`
})
export class AppComponent {
  public name = 'Essa';
  public editMode false;
}

我希望在用户按下取消按钮时恢复旧值。

这是 plunker举个例子。

最佳答案

我不认为对此有直接的支持。只需存储值并在取消时恢复它

import {Component} from 'angular2/core';

@Component({
    selector: 'my-app',
    template: `Name: {{ name  }}<br>
    <input *ngIf='editMode' type="text" [(ngModel)]='name' /><br>
    <button *ngIf='!editMode' (click)='startEdit()' >Edit</button>
    <button *ngIf='editMode' (click)='save()' >Save</button><br>
    <button *ngIf='editMode' (click)='cancel()' >Cancel</button>`
})
export class AppComponent {
  public name = 'Essa';
  public editMode false;
  startEdit() {
    this.oldName = this.name;
    this.editMode = !this.editMode;
  }
  save() {
    this.editMode = !this.editMode;
  }
  cancel() {
    this.editMode = !this.editMode;
    this.name = this.oldName;
  }
}

startEditsavecancel 方法不需要显式添加到组件中。绑定(bind)可以包含多个由 ; 分隔的语句,但如果它不止一个语句,我更喜欢这种方法。

Plunker

关于Angular2 - 在双向数据绑定(bind)中取消时恢复以前的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36238097/

相关文章:

html - 有没有办法对齐 HTML 表格中的列?

基于 id 的一个组件中的多个 Angular 模板(带模板存储)

typescript - Cypress + Typescript : How to use JS methods on return values of type Cypress. Chainable<字符串>?

javascript - 控制应用 typescript 属性装饰器的顺序?

node.js - 如何使用 GitHub Actions 自动发布 Typescript 包?

forms - Angular2动态添加/删除表单字段

Angular 2 react 形式字段启用/禁用

angular - 在 Angular 2 中使用 @Inject 时无法扩展父类(super class)

Angular Timer 来计算时间

angularjs - Angular - 无法读取未定义的属性 '$invalid'