1

我在这样定义的组件中有这些属性。

userDataDefinitions:Array<userDataDefinition>;
currentDefinition:userDataDefinition = null;

然后我有一个表单,它根据 currentDefinition 显示数据,设置如下:

<div *ngFor="let userDataDefinition of userDataDefinitions">
            <a href="#" (click)="setCurrentDefinition(userDataDefinition)">
              {{ userDataDefinition.key }}
            </a>
        </div>

表单输入字段使用 ngModel,如下所示:

[(ngModel)]="currentDefinition.property"

这意味着只要我编辑其中一个输入字段,底层的 currentDefinition 和 userDataDefinitions 就会立即更新,正如预期的那样。我的问题是,如果我希望仅在某个操作(例如表单提交)时更新底层模型,我应该怎么做?我应该克隆 currentDefinition 吗?我不应该使用 ngModel 吗?

实现此结果的正确 angular2 方法是什么?

非常感谢

问候

4

2 回答 2

1

您可以从属性到视图进行单向绑定,并且仅在您选择的事件上更新属性。这是一个示例:http ://plnkr.co/edit/lNcp7vcEGkozTzB8w4OT?p=info

//our root app component
import {Component, NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import {FormsModule} from '@angular/forms'

    @Component({
      selector: 'my-app',
      template: `
        <div>
          <label>{{name}}</label>
          <input type="text" [ngModel]="name" />
          <button (click)="name = 'change'">Change</button>
        </div>
      `,
    })
    export class App {
      name:string;
      constructor() {
        this.name = 'Angular2'
      }
    }

    @NgModule({
      imports: [ BrowserModule, FormsModule ],
      declarations: [ App ],
      bootstrap: [ App ]
    })
    export class AppModule {}
于 2016-11-04T06:45:07.123 回答
-1

我想这就是你要找的:

{{heroName}}<br> 
<input [(ngModel)]="heroName" #change> <br> <br>
<button (click)="update(change.value)">Update Model</button>

使用“#”,您可以参考正在更改的对象,如果您随后单击按钮,您可以将信息作为参数发送。

查看此问题以获取更多详细信息

Angular2 - 单击按钮更新模型

于 2016-11-04T06:43:05.280 回答