Angular: Validator formulir dijalankan kembali pada pembuatan tampilan (ulang)

Dibuat pada 28 Sep 2017  ·  1Komentar  ·  Sumber: angular/angular

Saya mengajukan...


[ ] 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

Perilaku saat ini

Saat arahan yang terkait dengan kontrol formulir dibuat dalam tampilan, validator dipicu.

Perilaku yang diharapkan

Validator tidak boleh dipicu saat tampilan berubah . Formulir reaktif tidak boleh terikat dengan cara mereka direpresentasikan dalam tampilan. Sumber kebenaran mereka harus menjadi model .

Reproduksi minimal masalah dengan instruksi

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

  1. Buka konsol.
  2. Gunakan tombol _Toggle visibilitas_ untuk mengonfirmasi bahwa validator berjalan pada setiap pembuatan direktif kontrol.

Apa motivasi / kasus penggunaan untuk mengubah perilaku?

  1. Lanjutkan dari langkah-langkah di atas.
  2. Tekan _set kesalahan secara manual_ untuk memasukkan kesalahan secara manual (ini mengejek pengaturan kesalahan secara manual setelah validasi dikembalikan dari backend)
  3. Tekan _Toggle visibilitas_ untuk menghilangkannya. Tidak ada yang terjadi di konsol.
  4. Tekan lagi untuk membuat kontrol muncul. Perhatikan bahwa log konsol, yang berarti validator sedang berjalan.

Perhatikan fakta bahwa pesan kesalahan sekarang hilang . Mengalihkan tampilan mengejek kasus penggunaan memiliki formulir mulitpart.


Jika ini adalah desain, saya tidak melihat alasan untuk itu. Kami sedang membuat tampilan tempat kami menulis model formulir data untuk dilihat. Tindakan membaca dari model seharusnya tidak memicu validator, sejauh yang saya mengerti. Seperti yang saya lihat, validator harus dijalankan ketika instance FormControl dibuat dalam model. _Mengapa validator terpicu saat nilainya tidak berubah?_

Lingkungan

<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

Komentar yang paling membantu

Ya terdengar benar.
Perubahan tampilan seharusnya tidak memengaruhi model dalam bentuk reaktif dan tidak ada perubahan pada model yang tidak akan memicu validasi.

Saya telah mengarahkannya ke https://github.com/angular/angular/blob/17eaef0311990e1a06c028f19bc6c63dcd775f31/packages/forms/src/directives/reactive_directives/form_group_directive.ts#L98 -L104

Itu selalu menjalankan validasi baru ( updateValueAndValidity() ), sementara itu hanya harus dilakukan jika ada validator baru yang diperkenalkan oleh direktif kontrol.

Juga mengganti nama fungsi menjadi addControlDirective() dapat mengurangi kebingungan tentang apa yang dilakukannya.

Mungkin entah bagaimana terkait dengan #14376 memiliki keduanya tentang mengedit tampilan pada formulir reaktif dan sepertinya FormGroupDirective salah.

>Semua komentar

Ya terdengar benar.
Perubahan tampilan seharusnya tidak memengaruhi model dalam bentuk reaktif dan tidak ada perubahan pada model yang tidak akan memicu validasi.

Saya telah mengarahkannya ke https://github.com/angular/angular/blob/17eaef0311990e1a06c028f19bc6c63dcd775f31/packages/forms/src/directives/reactive_directives/form_group_directive.ts#L98 -L104

Itu selalu menjalankan validasi baru ( updateValueAndValidity() ), sementara itu hanya harus dilakukan jika ada validator baru yang diperkenalkan oleh direktif kontrol.

Juga mengganti nama fungsi menjadi addControlDirective() dapat mengurangi kebingungan tentang apa yang dilakukannya.

Mungkin entah bagaimana terkait dengan #14376 memiliki keduanya tentang mengedit tampilan pada formulir reaktif dan sepertinya FormGroupDirective salah.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat