48. تنفيذ أدوات التحقق المخصصة
غالباً ما تكون أدوات التحقق المدمجة غير كافية. تسمح لنا أدوات التحقق المخصصة بتنفيذ قواعد خاصة بالتطبيق (على سبيل المثال، فحص تعقيد كلمة المرور، التحقق من أسماء المستخدمين الفريدة محلياً).
هيكل أداة التحقق
أداة التحقق المخصصة هي دالة بسيطة تأخذ مثيلاً لـ FormControl (أو AbstractControl) وتُرجع إما:
nullإذا كان التحقق ناجحاً.- كائن خطأ تحقق (على سبيل المثال،
{ 'forbiddenName': { value: control.value } }) إذا فشل التحقق.
مثال: أداة التحقق من الاسم المحظور
نريد منع المستخدمين من اختيار 'Test' أو 'Admin' كاسم مستخدم.
typescript import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';
export class CustomValidators {
// دالة مصنع (factory function) تُرجع دالة التحقق static forbiddenName(forbiddenWords: string[]): ValidatorFn { // هذه هي دالة التحقق التي يستدعيها Angular return (control: AbstractControl): ValidationErrors | null => {
const currentName = control.value as string;
if (!currentName) { return null; }
const isForbidden = forbiddenWords.includes(currentName.toLowerCase());
// إذا كان محظوراً، أعد كائن الخطأ
return isForbidden ? { 'forbiddenName': { value: control.value } } : null;
};
} }
تطبيق أداة التحقق المخصصة
typescript // في المكون حيث يتم تعريف النموذج this.userForm = this.fb.group({ username: ['', [ Validators.required, // استخدام دالة المصنع لتطبيق أداة التحقق CustomValidators.forbiddenName(['admin', 'root']) ]] });
يمكننا الآن التحقق من مفتاح الخطأ 'forbiddenName' في القالب.