bug(aria/combobox): `filterMode="auto-select"` returns old value
I maintainer di solito rispondono entro 1 giorno
@ok7sai ci sta già lavorando.
Dal 1/4/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Is this a regression?
- Yes, this behavior used to work in the previous version
The previous version in which this bug was not present was
No response
Description
angular/aria combobox with multi false, readonly false and filterMode="auto-select" returns old selected value.
If now we have AAA as selected but then we select BBB and hit Enter key -> we mustn't see AAA. Because we select another (BBB) value and approve it by Enter.
values():
<div>{{ listbox()?.values() | json }}</div>
<div ngCombobox [filterMode]="filterMode()" [readonly]="false">
<div #origin class="autocomplete">
<span
class="search-icon material-symbols-outlined"
translate="no"
aria-hidden="true"
>search</span
>
<input
aria-label="Label dropdown"
placeholder="Select a country"
[(ngModel)]="query"
ngComboboxInput
/>
</div>
<ng-template ngComboboxPopupContainer>
<ng-template
[cdkConnectedOverlay]="{origin, usePopover: 'inline', matchWidth: true}"
[cdkConnectedOverlayOpen]="true"
>
<div class="popup">
@if (countries().length === 0) {
<div class="no-results">No results found</div>
}
<div ngListbox [multi]="false">
@for (country of countries(); track country) {
<div ngOption [value]="country" [label]="country">
<span class="option-label">{{ country }}</span>
<span
class="check-icon material-symbols-outlined"
translate="no"
aria-hidden="true"
>check</span
>
</div>
}
</div>
</div>
</ng-template>
</ng-template>
</div>
import {
Combobox,
ComboboxInput,
ComboboxPopupContainer,
} from '@angular/aria/combobox';
import { Listbox, Option } from '@angular/aria/listbox';
import { OverlayModule } from '@angular/cdk/overlay';
import { CommonModule } from '@angular/common';
import {
ChangeDetectionStrategy,
Component,
computed,
input,
signal,
viewChild,
viewChildren,
} from '@angular/core';
import { FormsModule } from '@angular/forms';
const ALL_COUNTRIES = ['AAA', 'BBB', 'CCC', 'DDD'];
@Component({
selector: 'CustomCombobox',
templateUrl: 'combobox.html',
styleUrl: './combobox.scss',
imports: [
CommonModule,
Combobox,
ComboboxInput,
ComboboxPopupContainer,
Listbox,
Option,
OverlayModule,
FormsModule,
],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class CustomCombobox {
public filterMode = input.required<'manual' | 'auto-select' | 'highlight'>();
/** The combobox listbox popup. */
listbox = viewChild<Listbox<string>>(Listbox);
/** The options available in the listbox. */
options = viewChildren<Option<string>>(Option);
/** A reference to the ng aria combobox. */
combobox = viewChild<Combobox<string>>(Combobox);
/** The query string used to filter the list of countries. */
query = signal('');
/** The list of countries filtered by the query. */
countries = computed(() =>
ALL_COUNTRIES.filter((country) =>
country.toLowerCase().startsWith(this.query().toLowerCase())
)
);
constructor() {
}
}
Reproduction
StackBlitz link: https://stackblitz.com/edit/stackblitz-starters-gopytywj?file=src%2Fmain.ts,src%2Fcombobox%2Fcombobox.html
Steps to reproduce:
- type aaa -> values() are ["AAA"]
- remove input value
- Now: empty input and values(). Use arrow up/down keys to select BBB, CCC or DDD. Not AAA
- hit Enter key
- But values() are ["AAA"] again
Expected Behavior
We select BBB and hit Enter key -> we must see BBB, not AAA.
Actual Behavior
We select BBB, CCC, DDD and hit Enter key -> we see previous value: AAA
Environment
- Angular: 21.0.3 and later
- angular/aria: 21.0.2 - 21.2.0-next.0
- Browser(s):
- Operating System (e.g. Windows, macOS, Ubuntu):
- Lingua principale
- TypeScript
- Stelle
- 25k
- Fork
- 6.8k
- Merge medio
- 1g 5h
- PR unite (30g)
- 67
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di angular/components
-
bug(aria/combobox): keys pressed back to back are lost; only the last one reaches the popupForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaarea: aria/combobox gemini-triaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
angular/components#33973 ·
I maintainer di solito rispondono entro 1 giorno
-
bug(aria/combobox): ComboboxPopup throws NG0950 when destroyed before its first change detectionForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaarea: aria/combobox gemini-triaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
angular/components#33972 ·
I maintainer di solito rispondono entro 1 giorno
-
bug(material/sort): hover hint arrow on an unsorted header shows the active sort direction, not the resulting direction after click.Forse già presa @lekhmanrus l’ha presa 12 giorni fa. Apertaarea: material/sort P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
angular/components#33933 ·
I maintainer di solito rispondono entro 1 giorno
-
bug(mat-date-picker): month shown twice in date pickerForse già presa @PreethiPantangi l’ha presa 29 giorni fa. Apertaarea: material/datepicker P4
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
angular/components#33763 · 2 commenti · 3 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
Bug in table.scss footer cell height: unset instead of footer row height unsetForse già presa @minwookshin l’ha presa 16 giorni fa. Apertaarea: material/table P4
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
angular/components#33709 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di angular/components
Issue simili
-
DQ assisgnment closing at CRApertaenhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
equinor/prisma-decision-web#919 ·
I maintainer di solito rispondono entro 1 giorno
-
[DC] OneLogin sync imports a partial user list when an API request failsForse già presa @RaphaelFakhri l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
bitwarden/directory-connector#1276 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
home-assistant/installer#324 ·
I maintainer di solito rispondono entro 1 giorno
-
Mondriaan
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
knaw-huc/textannoviz#733 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno