0
我做了一個日期驗證器。它驗證現有的日期。我需要多個日期驗證器與其他限制,例如:一個最大日期驗證程序,不會讓用戶放入未來的日期或日期驗證程序只需要過去的日期。這是我目前的驗證器。適用於多種情況的可重複驗證器
export function dateValidator(group) {
const {day, month, year} = group.value;
const fullDate = `${day}/${month}/${year}`;
const dobPattern = /^(\d{1,2})[-\/](\d{1,2})[-\/](\d{4})$/;
const isStringValid = dobPattern.test(fullDate);
let isValid = false;
if (isStringValid) {
const intDay = Number(day);
const intMonth = Number(month);
const intYear = Number(year);
const jsMonth = intMonth - 1;
const date = new Date(intYear, jsMonth, intDay);
isValid = (date.getFullYear() === intYear && date.getMonth() === jsMonth && date.getDate() === intDay ;
}
return isValid ? null : { invalid: 'Invalid date' };
};
如何限制用戶放置未來的日期。 我用這個代碼以下行:
isValid = (date.getFullYear() === intYear && date.getMonth() === jsMonth && date.getDate() === intDay ;
但我不知道是否有無需進行復制和過去的這個代碼在一個更簡單的方法,並重新做小限制它。
這是否意味着我必須複製和粘貼多個驗證碼?我對此很陌生。 – Mai
不可以。如果您正確組織代碼,則不需要複製/粘貼。就像我解釋的那樣,創建一個'dateValidator'函數工廠,用你需要的所有參數來定製它的工作方式(如我的例子中的'maxDate')。然後在所需的所有字段中使用該驗證器,每次使用驗證器時都可能必須傳遞不同的參數。 – AngularChef