البرمجة

تحديث قيم الـ FormGroup وتعيين حالة dirty في Angular

عند العمل مع نماذج Reactive في Angular، يتطلب تغيير قيمة أحد العناصر وتحديد أنها قد تم تغييرها يدويًا لتشغيل المنطق الخاص بالتحقق من الصحة (validation logic)، في بعض الأحيان تحديد أن العنصر قد تم تغييره يمكن أن يكون أمرًا صعبًا. تتيح Angular وظيفة markAsDirty() للقيام بذلك، ولكنها لا تعمل مع patchValue() مباشرة. بدلاً من ذلك، يمكنك استخدام setValue() بدلاً من patchValue() وتمرير كائن يحتوي على القيم التي تريد تحديثها بالإضافة إلى تحديث الـ dirty بناءً على ذلك.

في الواقع، يمكنك تحقيق هذا الهدف من خلال مزامنة عمليتين: تحديث القيم وتحديد أن العنصر قد تم تغييره يدويًا. يمكنك القيام بذلك عن طريق استخدام دالة setValue() بدلاً من patchValue().

للقيام بذلك، يمكنك تغيير كودك كالتالي:

typescript
this.myForm.setValue({incidentDate: '2016-09-12'});

عند استخدام setValue() بدلاً من patchValue()، ستقوم بتحديث القيم وتعيين حالة dirty بشكل تلقائي. بمجرد تحديث القيم بواسطة setValue()، ستتم مطابقة جميع الصفات الموجودة في الكائن الجديد الممرر إليه مع العناصر الحالية في النموذج، بما في ذلك dirty. وهكذا، سيتم تعيين dirty إلى true بشكل تلقائي، مما يسمح لمنطق التحقق من الصحة بالعمل كما هو متوقع.

باستخدام هذا النهج، سيتم تحديث القيم وتعيين حالة dirty بناءً على القيم الجديدة المحددة يدويًا، مما يسمح لمنطق التحقق من الصحة بالتفاعل بشكل صحيح وفقًا لتغييرات القيم.

المزيد من المعلومات

بالإضافة إلى ذلك، يمكنك تحسين منطق التحقق من الصحة لديك لضمان تشغيله بشكل صحيح بمجرد تغيير حالة الـ dirty. يمكنك القيام بذلك عن طريق استدعاء دالة onValueChanged() بمجرد تحديث القيم وتعيين حالة dirty، وذلك لتحديث حالة الـ dirty وتفعيل منطق التحقق من الصحة.

باستخدام الكود التالي، يمكنك ضمان تشغيل منطق التحقق من الصحة بشكل صحيح بعد تحديث القيم وتعيين حالة dirty:

typescript
this.myForm.setValue({incidentDate: '2016-09-12'}); this.onValueChanged(); // تحديث منطق التحقق من الصحة بعد تغيير القيم وتعيين حالة dirty

من خلال استدعاء onValueChanged() بعد تحديث القيم وتعيين حالة dirty، سيتم تشغيل منطق التحقق من الصحة بشكل صحيح، حيث سيتم فحص حالة كل عنصر في النموذج وتحديث الأخطاء إذا لزم الأمر بناءً على القيم الجديدة وحالة الـ dirty.

بهذه الطريقة، يمكنك تحديث القيم وتعيين حالة dirty بنجاح وضمان تشغيل منطق التحقق من الصحة بشكل صحيح في تطبيقك Angular.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!