0

我有一个这样的 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;

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

4

1 回答 1

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 变量进行提交(或者在您的情况下,将 myVal 替换为 this.newItem.value)

于 2016-08-25T02:00:32.253 回答