问题原因
type
button 的类型。可选值:
- submit: 此按钮将表单数据提交给服务器。如果未指定属性,或者属性动态更改为空值或无效值,则此值为默认值。
- reset: 此按钮重置所有组件为初始值。
- button: 此按钮没有默认行为。它可以有与元素事件相关的客户端脚本,当事件出现时可触发。
- menu: 此按钮打开一个由指定menu元素进行定义的弹出菜单。
也就是说不指定button元素不指定type 类型,默认是submit 类型。
问题描述
填写好账号名密码点击按钮或者按下enter 键时会触发form表单的submit 事件,formGroup 指令会监听此事件,进而触发ngSubmit 事件,故而ngSubmit 的回调触发执行,打印出submitting {username: 'xx', password: 'xx'}
。 理论上只有form 下面button 的type 是submit 才会主动触发form 表单的submit 事件,但是html中button 并没有type="submit"
属性,所以表单的ngSubmit 事件到底如何触发??
主要代码如下,component 代码:
ngOnInit() {
this.form = this.fb.group({
username: ['', Validators.required],
password: ['', Validators.required],
})
}
submit() {
console.log('submitting', this.form.value); // submitting {username: 'xx', password: 'xx'}
}
html 模板代码:
<form [formGroup]="form" (ngSubmit)="submit()">
<label>账号名 <input type="text" formControlName="username"/></label>
<label>密码 <input type="text" formControlName="password"></label>
<button [disabled]="!form.valid">提交</button>
</form>