好的,有浏览器问题而且不确定我是否会遗漏某些内容。这是我的搜索者https://embed.plnkr.co/sStsEL/我的问题是当我编辑订单项并在修改期间点击还原时,Chrome会将我的值设置回数据模型值,但Firefox会擦除所有字段。我错过了什么?也许我应该将其升级为开发者,但有没有针对此的解决方法?如果我在NgOnChanges函数中调用@Input值,我得到正确的数据。屏幕上可以看到所有内容。
答案 0 :(得分:2)
您可以查看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;
}
您可以在[{1}}上注意到reset
事件并且其处理程序正在运行[formGroup]
由于您的按钮元素包含form.reset
且您在此元素上有type="reset"
个事件,并且还绑定了click
属性
disabled
Chrome和Firefox中的行为会有所不同:
https://jsfiddle.net/f1t5khwk/
正如您在点击按钮后在上面的示例中看到的那样,您将<button [disabled]="fg.pristine" type="reset" (click)="revert()"
属性设置为disabled
,因此Chrome中的true
事件发生后不会冒泡Firefox继续捕获reset
事件。
所以你的解决方法正在取代
reset
与
type="reset"
<强> Modified Plunker 强>