Hi,
After upgrading our project from ABP 9.2.0 (Angular 19.1.0) to ABP 10.3.0 (Angular 21.2.10), the abp-dynamic-layout component renders nothing. The resulting DOM is:
<abp-dynamic-layout class=""><!--ng-container--><!--container--></abp-dynamic-layout>
Replacing it with a plain <router-outlet> works correctly and all routed components render as expected, so the issue seems specific to dynamic layout resolution.
Key versions on the broken setup:
The same routing setup and app.component template work without any change on ABP 9.2.0 + Angular 19.1.0.
Is there a known migration step or breaking change between v9 and v10 around layout resolution, route data shape, or replaceable components that could cause the layout to not resolve? Happy to share both package.json files and a minimal repro if needed.
Thanks, Mucahit
ABP (LeptonX) sidebar navigation forces all root menu items that have children to be collapsible.
Currently, there is no built-in or supported way to disable this collapse behavior and keep a menu group always expanded.
This limitation affects use cases such as Quick Links section which are expected to remain permanently visible in the sidebar.
disableCollapsealwaysExpandedexpandedByDefault (locked)The only non-collapsible option is using menu-title, but:
menu-title items cannot contain child routesProvide an optional configuration to disable collapse behavior for a menu group, for example:
This should be an opt-in feature and should not change the existing default behavior.
Thank you.
We are getting a runtime error when we build the Angular project. This error came from nowhere. Nothing changed and we can't run even a version from 2 months ago. The error is coming from the project core dependency (@abp/ng.core). The error message is:
NullInjectorError: NullInjectorError: No provider for InjectionToken CORE_OPTIONS!
at Yf.get (core.mjs:1604:21)
at Dc.get (core.mjs:2134:27)
at Dc.get (core.mjs:2134:27)
at nk (core.mjs:1110:28)
at R (core.mjs:1116:40)
at rn.ɵfac [as factory] (abp-ng.core.mjs:973:42)
at Dc.hydrate (core.mjs:2251:33)
at Dc.get (core.mjs:2125:23)
at nk (core.mjs:1110:28)
at R (core.mjs:1116:40)
{
"dependencies": {
"@abp/ng.components": "~9.1.0",
"@abp/ng.core": "~9.1.0",
"@abp/ng.oauth": "~9.1.0",
"@abp/ng.setting-management": "~9.1.0",
"@abp/ng.theme.shared": "~9.1.0",
"@abp/signalr": "^9.1.0",
"@abp/uppy": "9.1.0",
"@angular/animations": "~19.2.3",
"@angular/common": "~19.2.3",
"@angular/compiler": "~19.2.3",
"@angular/core": "~19.2.3",
"@angular/elements": "19.2.3",
"@angular/forms": "~19.2.3",
"@angular/localize": "~19.2.3",
"@angular/platform-browser": "~19.2.3",
"@angular/platform-browser-dynamic": "~19.2.3",
"@angular/router": "~19.2.3",
"@formio/angular": "^8.0.0",
"@formio/js": "^5.0.1",
"@mescius/activereportsjs-angular": "^5.2.0",
"@sentry/angular": "^9.7.0",
"@storybook/test": "^8.6.7",
"@volo/abp.commercial.ng.ui": "~9.1.0",
"@volo/abp.ng.account": "~9.1.0",
"@volo/abp.ng.audit-logging": "~9.1.0",
"@volo/abp.ng.identity": "~9.1.0",
"@volo/abp.ng.language-management": "~9.1.0",
"@volo/abp.ng.openiddictpro": "~9.1.0",
"@volo/abp.ng.saas": "~9.1.0",
"@volo/abp.ng.text-template-management": "~9.1.0",
"@volosoft/abp.ng.theme.lepton-x": "~4.1.0",
"angular-gridster2": "^19.0.0",
"dayjs": "^1.11.13",
"highcharts": "11.4.8",
"monaco-editor": "^0.52.2",
"ngx-angular-query-builder": "~18.0.0",
"ngx-extended-pdf-viewer": "^22.3.9",
"ngx-flexmonster": "2.9.99",
"ngx-monaco-editor-v2": "^19.0.2",
"ngx-quill": "27.0.1",
"quill": "2.0.3",
"rxjs": "7.8.2",
"swagger-ui": "5.17.14",
"tslib": "2.8.1",
"zone.js": "~0.15.0"
},
"devDependencies": {
"@abp/ng.schematics": "~9.1.0",
"@angular-devkit/build-angular": "~19.2.4",
"@angular-eslint/builder": "~19.2.1",
"@angular-eslint/eslint-plugin": "~19.2.1",
"@angular-eslint/eslint-plugin-template": "~19.2.1",
"@angular-eslint/schematics": "~19.2.1",
"@angular-eslint/template-parser": "~19.2.1",
"@angular/cli": "~19.2.4",
"@angular/compiler-cli": "~19.2.3",
"@angular/language-service": "~19.2.3",
"@compodoc/compodoc": "^1.1.26",
"@storybook/addon-essentials": "^8.6.7",
"@storybook/addon-interactions": "^8.6.7",
"@storybook/addon-links": "^8.6.7",
"@storybook/angular": "^8.6.7",
"@storybook/blocks": "^8.6.7",
"@storybook/test-runner": "^0.22.0",
"@types/jasmine": "~5.1.7",
"@types/node": "^22.13.10",
"@typescript-eslint/eslint-plugin": "^8.27.0",
"@typescript-eslint/parser": "^8.27.0",
"eslint": "9.22.0",
"eslint-config-prettier": "^10.1.1",
"eslint-plugin-prettier": "^5.2.3",
"eslint-plugin-storybook": "^0.11.6",
"jasmine-core": "~5.6.0",
"karma": "~6.4.4",
"karma-chrome-launcher": "~3.2.0",
"karma-coverage": "~2.2.1",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "^2.1.0",
"ng-packagr": "^19.2.0",
"preact": "^10.26.4",
"prettier": "^3.5.3",
"prettier-eslint": "^16.3.0",
"storybook": "^8.6.7",
"typescript": "5.8.2"
}
}
I tried:
@abp/@9.x.x packages.@abp/* packages to 8.3.0.@angular/*@19.x.x packages well.