首页 文章

形式为Angular2 ngModel . 防止更新基础模型[重复]

提问于
浏览
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方法是什么?

非常感谢你

问候

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 {}
    
  • 1

    我想这就是你要找的东西:

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

    使用“#”,您可以参考正在更改的objekt,如果您再单击按钮,则会将您的信息作为参数发送 .

    有关详细信息,请查看此问题

    Angular2 - Update model on button click

相关问题