MatBlazor icon indicating copy to clipboard operation
MatBlazor copied to clipboard

MatAutocompleteList - Quick typing after clicking input throws JS error and crashes Blazor app.

Open Planit-Scheduler-Solutions opened this issue 9 months ago • 0 comments

Describe the bug: When using MatAutocomplete (even with a basic list of strings), clicking into the input and immediately typing quickly causes JavaScript interop errors, which crash the Blazor Server app. The issue occurs both locally and on the official MatBlazor site.

This appears to be a race condition, where internal JS objects ($list, foundation) are accessed before being initialized.

Observed Errors Microsoft.JSInterop.JSException: Cannot read properties of undefined (reading 'foundation') TypeError: Cannot read properties of undefined (reading 'foundation') at e.getSelectedIndex (matBlazor.js:1:261238)

Other times: Microsoft.JSInterop.JSException: Cannot read properties of null (reading '$list') TypeError: Cannot read properties of null (reading '$list') at e.setSelectedIndex (matBlazor.js:1:261304)

🧠 These happen in:

  • BaseMatAutocompleteList<T>.OnKeyDown(...)
  • BaseMatList.GetSelectedIndex(...) or SetSelectedIndex(...)
  • During JsInvokeAsync(...) inside MatBlazor base components

To Reproduce:

  • Use any MatAutocomplete, either: 1. With string list (List) or 2. With object list (List<Item>) using ToStringFunc
  • Run in Blazor Server
  • Focus the input by clicking it
  • Immediately start typing fast
  • App crashes with JSInterop error

🔁 Can be reproduced here: https://www.matblazor.com/Autocomplete

Expected behavior No crashes or JS errors. Typing quickly after focus should not break the component. JS interop should wait until foundation, $list, and other dependencies are available.

Screenshots / Logs

Image

Image

Additional context

❗ Happens with both string and object lists in MatAutocomplete

⌛ Only occurs when typing quickly right after clicking (focus)

💥 Crashes entire Blazor Server circuit in some cases

🔍 MatBlazor version: 2.10.0