Barista: [Filter Cepat] Secara terprogram menambahkan [filter] aktif menyebabkan ExpressionChangedAfterItHasBeenCheckedError dan mencegah handler menembak

Dibuat pada 16 Jul 2020  ·  12Komentar  ·  Sumber: dynatrace-oss/barista

Laporan Bug

Saat menggunakan komponen DtQuickFilter dan meneruskan array filter ke input [filters], komponen tidak bereaksi seperti yang diperlukan seperti yang dilakukan DtFilterField.

Apa yang harus terjadi?

Komponen DtQuickFilter harus bereaksi dengan tepat terhadap filter yang diteruskan ke input [filter]. Maka acara (filterChanges) harus diaktifkan.

Apa yang terjadi saat ini?

Komponen DtQuickFilter menerima filter yang diteruskan ke [filters], tetapi tidak mengaktifkan event handler, dan juga konsol menampilkan ExpressionChangedAfterItHasBeenCheckedError.

Demo

https://stackblitz.com/edit/github-mpgcfd?file=src%2Fquick-filter%2Fquick-filter-default-example%2Fquick-filter-default-example.ts

  1. Perhatikan larik "fakeFilters" yang diteruskan ke input [filter]
  2. Perhatikan log konsol di metode "handle(event)" yang dilampirkan ke event (filterChanges)
  3. Periksa konsol browser untuk melihat bahwa acara tersebut tidak pernah diaktifkan meskipun filter palsu sebenarnya ditambahkan ke bilah filter
  4. Perhatikan ekspresi telah mengubah kesalahan di log browser

Terima kasih!
Arnaud

bug cannot reproduce has-pr

Semua 12 komentar

Hai @areknow terima kasih telah memberikan contoh reproduksi dan membuka masalah.
Saya kira acara tidak dipicu adalah dengan desain - karena Anda sudah mengatur filter, Anda tahu bahwa itu berubah - oleh karena itu kami tidak mengaktifkan acara segera setelah input ditetapkan. Kami hanya mengaktifkan peristiwa ketika pengguna berinteraksi dengan komponen. Tapi saya mungkin salah dalam hal ini @lukasholzer Anda tahu lebih pasti :)

Mengenai kesalahan ExpressionChangedAfterChecked - ini jelas sesuatu yang perlu kita periksa.

Pada titik ini kami berasumsi bahwa ini adalah masalah saat menjalankan di viewEngine.
Kami telah mencoba mereproduksinya di aplikasi dev dan demo kami, dan tidak berhasil. Kami tidak dapat mereproduksi masalah di luar stackblitz.

@areknow dapatkah Anda mengonfirmasi bahwa aplikasi tempat Anda melihat masalah ini, berjalan di viewEngine (kami tahu bahwa stackblitz menjalankan viewEngine)?

@ffriedl89 Tentu itu masuk akal, terima kasih atas penjelasannya tentang event handler!

@gselltho Saya dapat mengonfirmasi bahwa aplikasi saya menggunakan viewEngine.

Terima kasih teman-teman!

@tomheller Saya baru saja mengaktifkan Ivy di aplikasi saya tetapi saya masih melihat kesalahan ExpressionChangedAfterChecked. Mungkin ada hal lain yang terjadi?

Pembaruan menarik lainnya: Kesalahan hanya terjadi pada saya secara lokal. Setelah membangunnya di dev melalui pipa kami (jenkins), kesalahan tidak terlihat di dev env.

Secara lokal saya melakukan npm ci tetapi saya masih melihat kesalahan. Apakah ada cache lain yang harus dibersihkan?

Terima kasih!

@areknow, bisakah Anda mencoba membangun aplikasi secara lokal dengan AOT? (Sebelum kompilasi waktu). Anda dapat mengaktifkan ini dengan menyetel properti aot di angular.json menjadi true atau dengan meneruskan --aot ke perintah ng serve ... .

Saya pikir ini adalah masalah kompilasi JIT (tepat waktu) - itu seharusnya menjadi alasan mengapa Anda tidak melihatnya di lingkungan dev Anda.

Secara umum sejak versi 9 Anda harus menggunakan AOT untuk kompilasi:
https://angular.io/guide/aot-compiler#choosing -a-compiler

Sebagai catatan, ada juga call-sync yang dijadwalkan untuk menyelidiki masalah ini lebih lanjut. Terima kasih @areknow telah menyiapkan ini.

@areknow, bisakah Anda mencoba membangun aplikasi secara lokal dengan AOT? (Sebelum kompilasi waktu). Anda dapat mengaktifkan ini dengan menyetel properti aot di angular.json menjadi true atau dengan meneruskan --aot ke perintah ng serve ... .

Saya pikir ini adalah masalah kompilasi JIT (tepat waktu) - itu seharusnya menjadi alasan mengapa Anda tidak melihatnya di lingkungan dev Anda.

Secara umum sejak versi 9 Anda harus menggunakan AOT untuk kompilasi:
https://angular.io/guide/aot-compiler#choosing -a-compiler

@lukasholzer terima kasih atas jawabannya!
Saya mencoba menambahkan aot: true ke konfigurasi build build di angular.json dan saya juga mencoba menambahkan flag --aot ke perintah serve. Saya masih melihat kesalahan secara lokal

Ini menjadi sangat aneh. Kami juga telah mencoba ini dalam aplikasi pengembangan kami dengan setiap kemungkinan permutasi ivy: on|off dan viewEngine: on|off , dan kami masih tidak dapat mereproduksi kesalahan. Tapi kita bisa melihat ini di stackblitz dan cukup bingung mengapa ini terjadi. Saya menantikan panggilan kami @areknow. Mungkin jika kita menyatukan kepala kita, kita bisa mencari tahu apa yang terjadi di sini.

@tomheller terdengar bagus!

@tomheller Saya dapat mereproduksi masalah dalam proyek baru: https://github.com/areknow/barista-quick-filter-bug

Masih senang bertemu di waktu yang telah kita rencanakan 👍

Berkat @areknow kami dapat melacak sumber masalah dalam pengaturan yang dia berikan. Sayangnya kami masih tidak dapat mereproduksinya di salah satu aplikasi kami di dalam repositori, yang agak mengkhawatirkan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

tomheller picture tomheller  ·  21Komentar

ffriedl89 picture ffriedl89  ·  8Komentar

tomheller picture tomheller  ·  4Komentar

lukasholzer picture lukasholzer  ·  8Komentar

lukasholzer picture lukasholzer  ·  8Komentar