【发布时间】:2017-12-14 09:16:03
【问题描述】:
我有一个数据收集组件,其中包括用于取消整个过程的“取消”按钮。问题是,如果某些由 Angular 2 验证器验证的 HTML 输入字段具有焦点且无效,并且我按下取消按钮,则不会删除该组件。相反,验证器将触发并且取消按钮按下将被忽略。在验证器抱怨之后,我必须第二次按下它,以使组件消失。取消按钮本身只会触发远离组件的路由。相关代码:
component.html
<form [formGroup]="addReminderForm" (ngSubmit)="onSubmit(addReminderForm.value)">
<input type="text" [formControl]="addReminderForm.controls['text']" />
<div class="error" *ngIf="addReminderForm.controls['text'].hasError('required') &&
addReminderForm.controls['text'].touched">You must enter reminder text</div>
<button type="submit" [disabled]="!addReminderForm.valid" >Add Reminder</button>
</form>
<button (click)="cancel()">Cancel</button>
component.ts:
ngOnInit() {
this.addReminderForm = this.fb.group({
'text': ['', Validators.compose([Validators.required, Validators.maxLength(20)])]
});
}
cancel() {
// Simply navigate back to reminders view
this.router.navigate(['../'], { relativeTo: this.route }); // Go up to parent route
}
我不知道为什么会这样。有什么想法吗?
【问题讨论】:
-
类似问题,在带有取消按钮的模态表单中显示相同的问题:stackoverflow.com/questions/46411390/…
-
谢谢,我注意到了这个问题。当我考虑这个问题时,我的表单实际上有处理模糊事件的处理程序——它修剪了模糊的输入字段。我现在想知道这是不是这个原因?
-
不,这不是原因。原因是一旦模糊触发表单验证就会触发。所以它发生在取消点击注册之前。我将发布有关如何解决的答案。
-
你最后找到解决办法了吗?
标签: angular angular2-forms cancellation