角度2 ngFormControl与相同输入的属性指令

时间:2016-08-25 01:48:03

标签: angular angular2-directives form-control

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

但是,提交的值仍然是原始值,因为属性指令没有更改它。如何确保值在表单模型中发生更改,以便我可以提交新值?

1 个答案:

答案 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)