2017-04-08 8 views
0

ブラウザの問題があり、何かを残しているかどうかわかりません。私の問題は、編集中に広告申込情報を編集して[元に戻す]をクリックすると、Chromeは値をデータモデル値に戻しますが、Firefoxはすべてのフィールドを消去します。私は何が欠けていますか?たぶん私は開発者にこれをエスカレートする必要がありますが、これには回避策がありますか?私がconsole.logにNgOnChanges関数の@Input値を設定すると、正しいデータが得られます。すべてが画面に記録されているのを見ることができます。Angular2 .reset()はFirefoxの@Input値をリセットしません

あなたが [formGroup]resetイベントに気づくことができ、あなたのボタン要素が type="reset"があり、この要素の clickイベントを持っているように、そのハンドラは form.reset

を実行しているFormGroupDirective

@Directive({ 
    selector: '[formGroup]', 
    providers: [formDirectiveProvider], 
    host: {'(submit)': 'onSubmit($event)', '(reset)': 'onReset()'}, <== reset event 
    exportAs: 'ngForm' 
}) 
export class FormGroupDirective extends ControlContainer implements Form, 
    OnChanges { 
    ... 
    onReset(): void { this.resetForm(); } 

    resetForm(value: any = undefined): void { 
    this.form.reset(value); 
    this._submitted = false; 
    } 

で見ることができ

答えて

2

また、バインドすることもできます。disabledプロパティ

<button [disabled]="fg.pristine" type="reset" (click)="revert()" 

ChromeとFirefoxで動作が異なることになります。

https://jsfiddle.net/f1t5khwk/

あなたがボタンをクリックした後、あなたがChromeでそのresetイベントがないようにした後disabledプロパティtrueに設定している上記の例でわかるようにFirefoxは引き続きresetイベントに参加します。

だからあなたの問題を回避するには、

type="button" 

Modified Plunker

type="reset" 

を交換しています

関連する問題