Skip to content

fix(combo): address NG0100 in zoneless apps#17314

Open
ddaribo wants to merge 5 commits into
masterfrom
bpachilova/combo-ng0100-fix-17310
Open

fix(combo): address NG0100 in zoneless apps#17314
ddaribo wants to merge 5 commits into
masterfrom
bpachilova/combo-ng0100-fix-17310

Conversation

@ddaribo

@ddaribo ddaribo commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Closes #17310

Description

Addresses the causes of NG0100 error in zoneless apps.

  1. 'attr.aria-activedescendant: As the focusedItem is read from a QueryList, when a focused item scrolls out of the viewport, the children QueryList no longer contains it and focusedItem would be null. The IgxDropDownItemNavigationDirective activeDescendant HostBinding reads the target's (dropdown) activeDescendant field, which calls focusedItem. With Angular's new zoneless run-time, on scroll the value gets updated between two diferent change detection passes, so the error is thrown.
    The fix caches the active desc. id in the combo-dropdown component.

  2. combo item template bindings properties errors - Sync _selected and _disableTransitions from the comboApi service once per CD cycle - in ngDoCheck.

Motivation / Context

Prevent the NG0100 error.

Type of Change (check all that apply):

  • Bug fix
  • New functionality
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Refactoring (no functional changes)
  • Documentation
  • Demos
  • CI/CD
  • Tests
  • Changelog
  • Skills/Agents

Component(s) / Area(s) Affected:

Combo, Simple combo

How Has This Been Tested?

  • Unit tests
  • Manual testing
  • Automated e2e tests

Test Configuration:

  • Angular version:
  • Browser(s):
  • OS:

Screenshots / Recordings

Checklist:

  • All relevant tags have been applied to this PR
  • This PR includes unit tests covering all the new code (test guidelines)
  • This PR includes API docs for newly added methods/properties (api docs guidelines)
  • This PR includes feature/README.MD updates for the feature docs
  • This PR includes general feature table updates in the root README.MD
  • This PR includes CHANGELOG.MD updates for newly added functionality
  • This PR contains breaking changes
  • This PR includes ng update migrations for the breaking changes (migrations guidelines)
  • This PR includes behavioral changes and the feature specification has been updated with them
  • Accessibility (ARIA, keyboard navigation, focus management) has been verified

Copilot AI review requested due to automatic review settings June 8, 2026 12:11

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes NG0100: ExpressionChangedAfterItHasBeenCheckedError occurrences for IgxCombo / IgxSimpleCombo when running with Angular’s zoneless change detection, primarily around virtual scrolling and aria-activedescendant stability.

Changes:

  • Adjusts dropdown activeDescendant typing to allow null when no focused item is available.
  • Stabilizes combo item template-bound state by syncing selection/transition flags once per CD cycle.
  • Adds zoneless-focused unit tests intended to cover the reported NG0100 regressions.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.

File Description
projects/igniteui-angular/drop-down/src/drop-down/drop-down.base.ts Updates activeDescendant return type to string | null to reflect actual runtime behavior.
projects/igniteui-angular/combo/src/combo/combo.component.spec.ts Adds a new “Zoneless” test suite for the issue #17310 reproduction paths.
projects/igniteui-angular/combo/src/combo/combo-item.component.ts Caches _selected / _disableTransitions in ngDoCheck to keep template bindings stable within a CD cycle.
projects/igniteui-angular/combo/src/combo/combo-dropdown.component.ts Caches a stable activeDescendant id for virtualized dropdown navigation to avoid mid-cycle changes.

Comment thread projects/igniteui-angular/combo/src/combo/combo.component.spec.ts
Comment thread projects/igniteui-angular/combo/src/combo/combo.component.spec.ts Outdated
@ddaribo ddaribo force-pushed the bpachilova/combo-ng0100-fix-17310 branch from 5194a0c to 9a1da01 Compare June 8, 2026 12:46
@ddaribo ddaribo force-pushed the bpachilova/combo-ng0100-fix-17310 branch from 9a1da01 to bcf8ea1 Compare June 8, 2026 12:50
@ddaribo ddaribo requested a review from MonikaKirkova June 9, 2026 10:34
@RivaIvanova RivaIvanova added 💥 status: in-test PRs currently being tested ✅ status: verified Applies to PRs that have passed manual verification and removed ❌ status: awaiting-test PRs awaiting manual verification 💥 status: in-test PRs currently being tested labels Jun 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

combo simple-combo version: 22.0.x ✅ status: verified Applies to PRs that have passed manual verification

Projects

None yet

Development

Successfully merging this pull request may close these issues.

IgxCombo, IgxSimpleCombo throw NG0100 in zoneless apps

4 participants