自定义验证器使用Aditional参数
目前,我已经尝试了代码Bellow,但我还没有使用额外的数据。
create-room.component.ts
import { Component, Inject, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormControl, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { DialogData } from '../game.component';
@Component({
selector: 'app-create-room',
templateUrl: './create-room.component.html',
styleUrls: ['./create-room.component.scss']
})
export class CreateRoomComponent implements OnInit {
form!: FormGroup;
constructor(@Inject(MAT_DIALOG_DATA) public data: DialogData, private _formBuilder: FormBuilder, private dialogRef: MatDialogRef<CreateRoomComponent>) { }
ngOnInit(): void {
this.form = this._formBuilder.group({
roomInput: new FormControl("", [Validators.required]),
}, {validator: roomValidator});
}
...
}
export const roomValidator: ValidatorFn = (formGroup: AbstractControl ): ValidationErrors | null => {
/* Check if the room name already exists */
var roomName: string = formGroup.get('roomInput')?.value;
// use data from MAT_DIALOG_DATA INJECT here
if (true) {
return { nameWrong: true };
}
return null;
}
如何使用对话框在自定义验证器中接收的数据。
我应该将this.data
作为参数吗?
Currently I've tried the code bellow but I'm not using the extra data yet.
create-room.component.ts
import { Component, Inject, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormControl, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { DialogData } from '../game.component';
@Component({
selector: 'app-create-room',
templateUrl: './create-room.component.html',
styleUrls: ['./create-room.component.scss']
})
export class CreateRoomComponent implements OnInit {
form!: FormGroup;
constructor(@Inject(MAT_DIALOG_DATA) public data: DialogData, private _formBuilder: FormBuilder, private dialogRef: MatDialogRef<CreateRoomComponent>) { }
ngOnInit(): void {
this.form = this._formBuilder.group({
roomInput: new FormControl("", [Validators.required]),
}, {validator: roomValidator});
}
...
}
export const roomValidator: ValidatorFn = (formGroup: AbstractControl ): ValidationErrors | null => {
/* Check if the room name already exists */
var roomName: string = formGroup.get('roomInput')?.value;
// use data from MAT_DIALOG_DATA INJECT here
if (true) {
return { nameWrong: true };
}
return null;
}
How can I use the data that the Dialog receives inside the custom ValidatorFn.
Should I pass the this.data
as an argument?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将验证器定义更改为一个函数,该函数接受您需要的任何参数,并返回 ValidatorFn :
然后像这样使用它:
change your validator definition to be a function that takes whatever parameters you need, and returns a
ValidatorFn
:then use it like so:
您有多种选择:
data
作为参数传递给验证器You have multiple options:
data
to the validator as argument