Angular 20
[20.0.0] — 2026-06-04
⚠️ BREAKING CHANGES
- Requires Angular 20.
peerDependenciesnow require@angular/commonand@angular/core
^20.0.0. Angular 19 and older projects must stay on@ngui/auto-complete@19. - Removed the unprefixed
[auto-complete]directive selector. Use[ngui-auto-complete]instead
(the directive now matches[ngui-auto-complete]only). Update any templates using the bare
auto-completeattribute:<input auto-complete …>→<input ngui-auto-complete …>.
Added
itemTemplateandheaderTemplateinputs (Angularng-templates) on the component and directive to
customize dropdown rows and the header row, as a typed alternative to the string-basedlist-formatter
/header-item-template. The item template receives the item as$implicitand the rowindex; the
string formatters remain supported and the templates take precedence when provided (fixes #357).open-directioninput (auto|up|down) on the directive and component to control whether the
dropdown opens above or below the input.up/downforce the direction;auto(default) keeps the
previous behaviour of opening above only when the input is near the bottom of the viewport (fixes #386).
Changed
- Upgraded to Angular 20 (
@angular/*20.3.x,@angular/material+@angular/cdk20.2.x).
Install@ngui/auto-complete@20for Angular 20 projects. - Standalone components.
NguiAutoCompleteComponentandNguiAutoCompleteDirectiveare now
standalone.NguiAutoCompleteModuleis retained and re-exports both, so existing
imports: [NguiAutoCompleteModule]consumers keep working unchanged — you can now alternatively
import the standalone component/directive directly. (Full NgModule removal is planned for Angular 21.) inject()DI. Constructor parameter injection across the library was migrated to theinject()
function (no public API change).
Internal (development tooling only — no impact on consumers)
ng updateto Angular 20:@angular/cli+@angular-devkit/build-angular20.3.x,
ng-packagr20.3.2,angular-eslint20.7.0. Workspace migrations applied (schematictype
defaults inangular.json,tsconfigmoduleResolution→bundler).- Bumped
@cypress/schematic4.3 → 5 (now requires Angular 20). - Re-enabled the
@angular-eslint/prefer-standalonelint rule (deferred in 19.0.0). - The demo app was migrated to a standalone
bootstrapApplicationsetup (AppModuleand the routing
NgModule removed in favour ofprovideRouter+app.routes.ts). - Hardened the library component spec so its focus-triggered dropdown reload resolves against a local
source array (Angular 20 / zone.js surfaces the previously-swallowed async error).
Notes
- ESLint 10 remains deferred:
angular-eslint20 still peers on ESLint^8.57 || ^9. It is planned for
the Angular 21 release alongside full NgModule removal.
What's Changed
- feat: upgrade to Angular 20 + standalone/inject migration (v20.0.0) by @almothafar in #483
- feat: ng-template customization for dropdown rows (#357) by @almothafar in #485
- feat: add open-direction input to control dropdown side (#386) by @almothafar in #484
- build: adopt Prettier (printWidth 120) and format the codebase by @almothafar in #486
- chore: modernize issue template to GitHub issue forms by @almothafar in #487
- fix(issue-template): link to README #usage anchor by @almothafar in #488
- build(deps): bump rxjs 7.8.2 and tslib 2.8.1 by @almothafar in #489
Full Changelog: 19.0.0...20.0.0