我试图在Angular(v12)和Ionic(v6)项目中创建一个Reactive表单。当我提交表单时,页面只是显示为刷新,而不是调用表单标签ngSubmit属性中指定的submit函数。该应用程序基于离子标签,以防可能导致问题?我已经将ReactiveFormsModule导入到页面模块而不是应用模块中,因为我读过的各种教程建议您在使用Ionic时需要这样做。
profile.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { ProfilePage } from './profile.page';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
@NgModule({
imports: [
CommonModule,
IonicModule,
FormsModule,
ReactiveFormsModule,
],
declarations: [ProfilePage]
})
export class ProfilePageModule {}
字符串
profile.page.ts
import { Component, OnInit } from '@angular/core';
import {FormControl, FormGroup, Validators} from '@angular/forms';
import { Profile } from '../shared/models/profile';
import { ProfileService } from './profile.service';
@Component({
selector: 'app-profile',
templateUrl: './profile.page.html',
styleUrls: ['./profile.page.scss'],
})
export class ProfilePage implements OnInit {
profileForm : FormGroup
constructor(private _profileService: ProfileService) {}
ngOnInit(): void {
this.profileForm = new FormGroup({
firstName: new FormControl(),
middleName: new FormControl(),
lastName: new FormControl(),
dob: new FormControl(),
companyId: new FormControl()
});
}
save() {
console.log('test');
}
}
型
profile.page.html
<ion-content>
<form [formGroup]="profileForm" (ngSubmit)="save()" novalidate>
<ion-list>
<ion-item>
<ion-label>First Name</ion-label>
<ion-input
id="firstName"
type="text"
required
formControlName="firstName">
</ion-input>
</ion-item>
<ion-item>
<ion-label>Middle Name</ion-label>
<ion-input
id="middleName"
type="text"
formControlName="middleName">
</ion-input>
>
</ion-item>
<ion-item>
<ion-label>Last Name</ion-label>
<ion-input
id="lastName"
type="text"
formControlName="lastName">
</ion-input>
>
</ion-item>
<ion-item>
<ion-label>DOB</ion-label>
<ion-input
id="dob"
type="date"
formControlName="dob">
</ion-input>
>
</ion-item>
<ion-button form="profileForm"
expand="block"
type="submit"
[disabled]="!profileForm.valid">
Save
</ion-button>
</ion-list>
</form>
</ion-content>
型
3条答案
按热度按时间csbfibhn1#
使用按钮属性介绍它:这起了作用,并停止了整个页面的重新加载:如
<button type="button"
或1.我把按钮类型从“提交”改为“按钮”
1.我在按钮props中引入了一个**(click)= submitValues()**,如下所示:提交
即
<button type="submit" (click)= submitValues()>Submit Form</button>
这阻止了页面重新加载,我希望这有帮助。
b4qexyjb2#
我设法通过将
profile.module.ts
导入AppModule
来修复这个问题。hyrbngr73#
在我的例子中,我所做的是错误地将
<ion-button>
放在关闭</form>
之后,这阻止了它触发事件。通过输入<ion-button>
并关闭<form>
标记解决了这个问题。