2016-08-25 61 views
0

我有这样一个FormControl:角2 ngFormControl与属性指令在同一输入

<form [ngFormModel]='controlGroup' novalidate> 
    Amount <input type="text" dmAmount [ngFormControl]="formControls.value"> 
</form> 

this.controlGroup = this.formBuilder.group({ 
    value: [this.newItem.value, Validators.compose([Validators.required, Validators.pattern('^[0-9]+[wm]?$')])], 
}); 

dmAmount属性指令变异值,它确实改变了里面输入:

//some code 
this.elRef.nativeElement.value = +num * 12; 

但是提交值仍然是原来的,就像属性指令没有改变它一样。如何确保表单模型中的值发生更改,以便我可以提交新值?

回答

0

在你的代码

private myVal: number; 

创建一个属性,并以您的视图分配ngModel

<form [ngFormModel]='controlGroup' novalidate> 
    Amount <input type="text" dmAmount [(ngModel)]="myVal" [ngFormControl]="formControls.value"> 
</form> 

你的方法应该更新变量设为myVal而不是直接的本土元素。它看起来像你在NativeScript这样做,所以你需要通过NgZone运行更新这样

import { NgZone } from "@angular/core"; 

constructor(private _zone: NgZone) {} 

// Your code 
this._zone.run(() => this.myVal = +num * 12); 

这应该更新您的视图。然后使用myVal变量进行提交(或者在你的情况下,用this.newItem.value替换myVal)