如何验证离子形式
How to give validation for form in ionic
我有这样一张注册表。你能帮我如何为此表单提供自定义名称和电子邮件验证吗
registrationForm = this.formBuilder.group({
name: [''],
email: [''],
phone: [''],
address: this.formBuilder.group({
street: [''],
city: [''],
state: [''],
zip: ['']
})
});
你可以试试这个,我已经向你展示了注册用户的正常实现,
在那里你可以看到我已经使用该服务来获取响应,如果有任何错误,我正在检查错误并使用 toast 消息显示。
export class RegisterPage implements OnInit {
resgiterForm: FormGroup;
submitted: boolean = false;
constructor(
private formBuilder: FormBuilder,
public navigation: NavigationPageAndParamsService,
public userService: UserService,
public toastController:ToastController
) {}
ngOnInit() {
this.resgiterForm = this.formBuilder.group({
username: ['', Validators.required],
email: ['', [Validators.required, Validators.email]],
password: ['', [Validators.required, Validators.minLength(6)]],
});
}
get f() {
return this.resgiterForm.controls;
}
async register() {
console.log('What is the regsistration information', this.resgiterForm);
this.submitted = true;
if (this.resgiterForm.invalid) {
return;
}
this.userService.registerUser(this.resgiterForm.value).subscribe(
data => {
console.log('Data', data);
if (data) {
this.navigation.navigateToPage('/tabs/feeds');
}
},
async err => {
var err = err.error[0].message;
const toast = await this.toastController.create({
message: err,
duration:3000,
position:'bottom',
cssClass:'registration-toast'
})
await toast.present()
}
);
}
}
<form [formGroup]="resgiterForm" (submit)="register()">
<ion-list>
<ion-item class="ion-padding-end ion-padding-start">
<ion-label position="stacked">Username*</ion-label>
<ion-input type="text" formControlName="username" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.username.errors }">
</ion-input>
</ion-item>
<div *ngIf="submitted && f.username.errors" class="invalid-feedback">
<div *ngIf="f.username.errors.required">Username is required</div>
</div>
<ion-item class="ion-padding-end ion-padding-start">
<ion-label position="stacked">Email*</ion-label>
<ion-input type="text" formControlName="email" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.email.errors }">
</ion-input>
</ion-item>
<div *ngIf="submitted && f.email.errors" class="invalid-feedback">
<div *ngIf="f.email.errors.required">Email is required</div>
<div *ngIf="f.email.errors.email">Email must be a valid email address</div>
</div>
<ion-item class="ion-padding-end ion-padding-start">
<ion-label position="stacked">Password</ion-label>
<ion-input type="password" formControlName="password" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.password.errors }"></ion-input>
</ion-item>
<div *ngIf="submitted && f.password.errors" class="invalid-feedback">
<div *ngIf="f.password.errors.required">Password is required</div>
<div *ngIf="f.password.errors.minlength">Password must be at least 6 characters</div>
</div>
</ion-list>
<ion-list class="ion-text-center ion-padding-vertical">
<ion-button type="submit" shape="round">Submit</ion-button>
</ion-list>
</form>
我有这样一张注册表。你能帮我如何为此表单提供自定义名称和电子邮件验证吗
registrationForm = this.formBuilder.group({
name: [''],
email: [''],
phone: [''],
address: this.formBuilder.group({
street: [''],
city: [''],
state: [''],
zip: ['']
})
});
你可以试试这个,我已经向你展示了注册用户的正常实现, 在那里你可以看到我已经使用该服务来获取响应,如果有任何错误,我正在检查错误并使用 toast 消息显示。
export class RegisterPage implements OnInit {
resgiterForm: FormGroup;
submitted: boolean = false;
constructor(
private formBuilder: FormBuilder,
public navigation: NavigationPageAndParamsService,
public userService: UserService,
public toastController:ToastController
) {}
ngOnInit() {
this.resgiterForm = this.formBuilder.group({
username: ['', Validators.required],
email: ['', [Validators.required, Validators.email]],
password: ['', [Validators.required, Validators.minLength(6)]],
});
}
get f() {
return this.resgiterForm.controls;
}
async register() {
console.log('What is the regsistration information', this.resgiterForm);
this.submitted = true;
if (this.resgiterForm.invalid) {
return;
}
this.userService.registerUser(this.resgiterForm.value).subscribe(
data => {
console.log('Data', data);
if (data) {
this.navigation.navigateToPage('/tabs/feeds');
}
},
async err => {
var err = err.error[0].message;
const toast = await this.toastController.create({
message: err,
duration:3000,
position:'bottom',
cssClass:'registration-toast'
})
await toast.present()
}
);
}
}
<form [formGroup]="resgiterForm" (submit)="register()">
<ion-list>
<ion-item class="ion-padding-end ion-padding-start">
<ion-label position="stacked">Username*</ion-label>
<ion-input type="text" formControlName="username" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.username.errors }">
</ion-input>
</ion-item>
<div *ngIf="submitted && f.username.errors" class="invalid-feedback">
<div *ngIf="f.username.errors.required">Username is required</div>
</div>
<ion-item class="ion-padding-end ion-padding-start">
<ion-label position="stacked">Email*</ion-label>
<ion-input type="text" formControlName="email" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.email.errors }">
</ion-input>
</ion-item>
<div *ngIf="submitted && f.email.errors" class="invalid-feedback">
<div *ngIf="f.email.errors.required">Email is required</div>
<div *ngIf="f.email.errors.email">Email must be a valid email address</div>
</div>
<ion-item class="ion-padding-end ion-padding-start">
<ion-label position="stacked">Password</ion-label>
<ion-input type="password" formControlName="password" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.password.errors }"></ion-input>
</ion-item>
<div *ngIf="submitted && f.password.errors" class="invalid-feedback">
<div *ngIf="f.password.errors.required">Password is required</div>
<div *ngIf="f.password.errors.minlength">Password must be at least 6 characters</div>
</div>
</ion-list>
<ion-list class="ion-text-center ion-padding-vertical">
<ion-button type="submit" shape="round">Submit</ion-button>
</ion-list>
</form>