.ts 檔案:
myForm: FormGroup = new FormGroup({
Id: new FormControl("",[Validators.pattern('^.{1,50}$')])
});
addEntry(){
this.finalmsg =[];
let class = '';
let msg = '';
let snackbar = new SnackbarComponent(this.snackbar);
if(this.myForm.controls['Id'].invalid){
msg = 'Enter between 1 to 50';
class = 'redsnackbar';
this.finalmsg.push(msg);
snackbar.openSnackBar(this.finalmsg, "Close", class);
}
this.dialogRef.close("OK")
}
這是我用來驗證輸入欄位的代碼。它的作業方式與它應該如何作業相反如果我從無效變為有效然后顯示小吃店。當它無效時,它不會進入回圈,對話框關閉。可能是什么問題?
uj5u.com熱心網友回復:
您使用的運算式是導致問題的原因,請將正則運算式替換為以下內容:
myForm: FormGroup = new FormGroup({
//YOU SHOULD TELL THE `Validators` TO only allow digit from 0 to 50 and no
//other character should be allowed
Id: new FormControl("",[Validators.pattern('^[1-9]$|^[1-9][0-9]$|^(50)$')])
});
addEntry(){
this.finalmsg =[];
let class = '';
let msg = '';
let snackbar = new SnackbarComponent(this.snackbar);
if(this.myForm.controls['Id'].invalid){
msg = 'Enter between 1 to 50';
class = 'redsnackbar';
this.finalmsg.push(msg);
snackbar.openSnackBar(this.finalmsg, "Close", class);
}
this.dialogRef.close("OK")
}
享受
uj5u.com熱心網友回復:
正則運算式模式(通常,不僅僅是在 Angular 中)用于檢查字串的結構,而不是理解它的潛在含義或值(例如數字)。您在問題中使用的模式告訴驗證器它需要一個長度為 1 到 50 個字符的字串,包括 1 到 50 個字符。然而,根據您顯示的錯誤訊息,您正在尋找一個值,該值作為一個數字,落在 1 到 50 的范圍內。
改變這一行:
Id: new FormControl("",[Validators.pattern('^[1-9]$|^[1-9][0-9]$|^(50)$')])
對此:
Id: ['', Validators.compose([ Validators.required, Validators.min(1), Validators.max(50) ])]
(當然根據包含/獨占變體調整邊界)
或者,如果你是字串的長度后,使用Validators.minLength(...)和Validators.maxLength(...)相應
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/377545.html
