Angular Ionic reacitve form wont call ngSubmit function,page refreshes instead

yacmzcpb  于 2023-08-01  发布在  Ionic
关注(0)|答案(3)|浏览(96)

我试图在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>

csbfibhn

csbfibhn1#

使用按钮属性介绍它:这起了作用,并停止了整个页面的重新加载:如<button type="button"
1.我把按钮类型从“提交”改为“按钮”
1.我在按钮props中引入了一个**(click)= submitValues()**,如下所示:提交
<button type="submit" (click)= submitValues()>Submit Form</button>
这阻止了页面重新加载,我希望这有帮助。

b4qexyjb

b4qexyjb2#

我设法通过将profile.module.ts导入AppModule来修复这个问题。

hyrbngr7

hyrbngr73#

在我的例子中,我所做的是错误地将<ion-button>放在关闭</form>之后,这阻止了它触发事件。通过输入<ion-button>并关闭<form>标记解决了这个问题。

相关问题