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 に答える