Angular: تتم إعادة تشغيل أدوات التحقق من صحة النموذج عند العرض (إعادة) الإنشاء

تم إنشاؤها على ٢٨ سبتمبر ٢٠١٧  ·  1تعليق  ·  مصدر: angular/angular

أنا أرسل ...


[ ] Regression (a behavior that used to work and stopped working in a new release)
[x] Bug report  <!-- Please search GitHub for a similar issue or PR before submitting -->
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question

السلوك الحالي

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

سلوك متوقع

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

الحد الأدنى من استنساخ المشكلة بالتعليمات

https://stackblitz.com/edit/angular-reactive-forms-issue؟file=app/app.component.ts

  1. افتح وحدة التحكم.
  2. استخدم الزر _Toggle visiblity_ لتأكيد تشغيل المدققين في كل إنشاء توجيه تحكم.

ما هو الدافع / حالة الاستخدام لتغيير السلوك؟

  1. تواصل من الخطوات أعلاه.
  2. اضغط على _ ضبط الأخطاء يدويًا_ لإدخال خطأ يدويًا (هذا يسخر من تعيين خطأ يدويًا بعد إرجاع التحقق من الواجهة الخلفية)
  3. اضغط على _Toggle visiblity_ لجعلها تختفي. لا شيء يحدث في وحدة التحكم.
  4. اضغط عليه مرة أخرى لإظهار عنصر التحكم. لاحظ أن سجلات وحدة التحكم ، مما يعني أن المدققين قيد التشغيل.

لاحظ حقيقة أن رسالة الخطأ قد اختفت الآن . تبديل العرض يسخر من حالة استخدام وجود نموذج متعدد الأجزاء.


إذا كان هذا عن طريق التصميم ، فلا أرى سببًا لذلك. نحن نقوم بإنشاء طريقة عرض حيث نكتب نموذج نموذج البيانات لعرضه. لا ينبغي أن يؤدي إجراء القراءة من النموذج إلى تشغيل المدققين ، على حد فهمي. كما أراها ، يجب تشغيل المدققات عند إنشاء مثيلات FormControl في النموذج. _لماذا يتم تشغيل أدوات التحقق عندما لا تتغير القيمة؟ _

بيئة

<br i="34"/>
Angular version: 4.3.6<br i="35"/>
<!-- Check whether this is still an issue in the most recent Angular version -->
P4 forms validators medium confirmed triage #1 bufix

التعليق الأكثر فائدة

نعم يبدو صحيحا.
يجب ألا يؤثر التغيير في العرض على النموذج في الأشكال التفاعلية ولا يجب أن يؤدي أي تغيير في النموذج إلى التحقق من الصحة.

لقد قمت بتوجيهها إلى https://github.com/angular/angular/blob/17eaef0311990e1a06c028f19bc6c63dcd775f31/packages/forms/src/directives/reactive_directives/form_group_directive.ts#L98 -L104

يتم دائمًا تشغيل عملية تحقق جديدة ( updateValueAndValidity() ) ، بينما يجب أن تفعل ذلك فقط إذا كان هناك مدققات جديدة مقدمة من توجيه التحكم.

قد يؤدي أيضًا إعادة تسمية الوظيفة إلى addControlDirective() إلى تقليل الالتباس بشأن ما تفعله.

قد يكون مرتبطًا بطريقة أو بأخرى بـ # 14376 لأنه يتعلق بتحرير العرض في نموذج تفاعلي ويبدو أن FormGroupDirective مخطئ.

>كل التعليقات

نعم يبدو صحيحا.
يجب ألا يؤثر التغيير في العرض على النموذج في الأشكال التفاعلية ولا يجب أن يؤدي أي تغيير في النموذج إلى التحقق من الصحة.

لقد قمت بتوجيهها إلى https://github.com/angular/angular/blob/17eaef0311990e1a06c028f19bc6c63dcd775f31/packages/forms/src/directives/reactive_directives/form_group_directive.ts#L98 -L104

يتم دائمًا تشغيل عملية تحقق جديدة ( updateValueAndValidity() ) ، بينما يجب أن تفعل ذلك فقط إذا كان هناك مدققات جديدة مقدمة من توجيه التحكم.

قد يؤدي أيضًا إعادة تسمية الوظيفة إلى addControlDirective() إلى تقليل الالتباس بشأن ما تفعله.

قد يكون مرتبطًا بطريقة أو بأخرى بـ # 14376 لأنه يتعلق بتحرير العرض في نموذج تفاعلي ويبدو أن FormGroupDirective مخطئ.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات