我有一个像这样的FormControl:
<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 :(得分:0)
在代码中创建一个属性
private myVal: number;
在视图中指定ngModel
<form [ngFormModel]='controlGroup' novalidate>
Amount <input type="text" dmAmount [(ngModel)]="myVal" [ngFormControl]="formControls.value">
</form>
您的方法应该直接更新myVal变量而不是native元素。看起来你在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)