Activities of "Belen.molinaMA"

Hello ABP Support Team,

I’m facing persistent dependency compatibility issues in an ABP Angular UI project. The problem appears to come from the template’s dependency tree not being aligned with the Angular version used by the project, and it is currently blocking our CI/CD builds.

Impact

This issue prevents successful Angular compilation, causing our CI pipeline to fail and blocking deployments.

Environment

  • Backend: .NET 10 (SDK/runtime)
  • ABP packages: @abp/ng.theme.shared@10.0.2 (and related ABP Angular packages)
  • Angular: @angular/*@20.0.7
  • Node: [your version]
  • Package manager: Yarn (CI) / npm (local)

Problem Summary

When installing dependencies and building the Angular app, I get peer dependency conflicts and, more importantly, TypeScript compilation errors caused by duplicate declarations from multiple copies of @angular/core being installed.

The dependency tree pulls @swimlane/ngx-datatable@21.1.0 via @abp/ng.theme.shared@10.0.2, but ngx-datatable@21.1.0 only declares peer support for Angular 17.x || 18.x || 19.x. With Angular 20 in the project, npm/yarn resolves/overrides peers and can end up with multiple Angular core typings, producing compilation failures.

Installation Warnings (excerpt)

npm warn While resolving: @swimlane/ngx-datatable@21.1.0
npm warn Found: @angular/core@20.0.7
npm warn Could not resolve dependency:
npm warn peer @angular/core@"17.x || 18.x || 19.x" from @swimlane/ngx-datatable@21.1.0
npm warn ... from @abp/ng.theme.shared@10.0.2

Build Error (blocking) (excerpt)

X [ERROR] TS2451: Cannot redeclare block-scoped variable 'ngI18nClosureMode'.
    node_modules/angular-oauth2-oidc/node_modules/@angular/core/...d.ts:810:10
  'ngI18nClosureMode' was also declared here.
    node_modules/@angular/core/...d.ts:810:10

X [ERROR] TS2451: Cannot redeclare block-scoped variable 'ngDevMode'.
    node_modules/angular-oauth2-oidc/node_modules/@angular/core/...d.ts:22:10
  'ngDevMode' was also declared here.
    node_modules/@angular/core/...d.ts:22:10

This indicates multiple @angular/core copies/versions in the dependency tree (likely due to peer dependency mismatches).

Steps to Reproduce

  1. Use ABP Angular UI packages 10.0.2
  2. Set Angular to 20.0.7
  3. Run install (yarn install or npm install)
  4. Build (yarn build / ng build)
  5. Observe peer dependency warnings and TS redeclare errors

Expected Behavior

ABP Angular packages (and their transitive dependencies) should be compatible with the Angular version used by the project, or ABP should provide an updated dependency set / clear guidance to prevent multiple Angular versions from being installed.

Request

Could you please confirm:

  1. Which ABP Angular package version officially supports Angular 20?
  2. Whether @abp/ng.theme.shared@10.0.2 is expected to work with Angular 20.
  3. If not yet supported, is there an updated ABP version (or recommended overrides/resolutions) that updates/replaces ngx-datatable and prevents duplicate @angular/core installations?
  4. Recommended migration/upgrade path for ABP + Angular 20.

I can provide:

  • package.json + lock file
  • yarn why @angular/core output
  • Full install/build logs

Thanks in advance for your help.

Hello ABP Team,

We are working with ABP Framework (Angular UI) and using the built-in <abp-modal> component.

We need to increase the width of a single modal only, without affecting other modals globally.

🔍 What we are trying to achieve

Make one specific modal wider (XL / ~90% viewport width)

Keep all other modals unchanged

Use supported / recommended ABP approach

Avoid hacks or deprecated Angular features

This modal contains complex content (tabs + editable tables), so the default width is too restrictive for a good UX.

🧪 What we have already tried

size="xl"

<abp-modal size="xl">

➡️ No effect.

dialogClass input

<abp-modal [dialogClass]="'modal-xl'">

➡️ Angular compilation error: Can't bind to 'dialogClass' since it isn't a known property of 'abp-modal'.

CSS via component SCSS

.concept-modal-xl .modal-dialog { max-width: 90vw; }

➡️ No effect due to ViewEncapsulation and modal being rendered outside the component DOM.

CSS via global styles (styles.scss / theme.scss)

.modal-xl .modal-dialog { max-width: 90vw; }

➡️ Works only if applied globally, but this affects all modals, which we want to avoid.

modalClass attribute (as per documentation)

<abp-modal modalClass="modal-xl">

➡️ No visual change in width.

📖 Documentation referenced

https://abp.io/docs/latest/framework/ui/angular/modal

We followed the documentation, but we couldn’t find a clear, working example of how to change the width of only one specific <abp-modal>.

❓ Our questions

What is the official and supported way to change the width of a specific <abp-modal> in ABP Angular?

Is there a way to pass custom options to the underlying NgbModal (e.g. windowClass, size, or similar)?

If this is not supported, what is the recommended alternative for complex editors that require wider layouts?

🛠 Environment

ABP Framework: latest

UI: Angular

Theme: Lepton

Bootstrap: v5

Thank you very much. We appreciate guidance on the correct ABP-recommended approach.

Best regards.

We are using ABP 8.x (or 9/10.x if applicable) with the SaaS module enabled and database-per-tenant architecture. The tenant is correctly created, and the table SaasTenantConnectionStrings contains a valid "Default" connection string for that TenantId.

However, during runtime ABP is not switching the connection string. All data is always saved into the Host database regardless of the tenant connection string.

What we already verified

The tenant exists in SaasTenants.

The connection string exists in SaasTenantConnectionStrings with Name = "Default".

The connection string points to a different database and that database exists.

Permissions and authentication are working correctly.

Requests are successfully authenticated and the application resolves the user identity, but data is still persisted in the Host DB.

Expected behavior

ABP should switch the connection string when a tenant is resolved, and EF Core should write data into the tenant's isolated database.

Actual behavior

ABP always uses the Host database even though a tenant-specific connection string is present. No exceptions are thrown. EF Core always connects to the Host DB.

Additional notes

The issue occurs even when calling the application service methods that use CurrentTenant.

We confirmed that the connection string for the tenant is correct by testing it manually.

We also checked the DbContext configuration and module configuration, but ABP still ignores the tenant connection string.

No domain resolution or pipeline configuration seems to affect the problem; the behavior is consistent.

Request

We need assistance validating:

Whether ABP is correctly resolving the tenant in the current HTTP request.

Whether EF Core is correctly switching the connection string for the DbContext.

Whether there is any misconfiguration in our DbContext, module setup, or multitenancy configuration that prevents ABP from using the tenant connection string.

Please advise how to debug or what additional logs to produce so we can identify why ABP always uses the Host database.

Hello ABP Team,

I would like to request support regarding two related issues with SaaS tenant connection strings in ABP Commercial.

  1. The main issue: the connection string is validated but never saved

When using the Angular UI to configure a tenant's connection string:

The endpoint CheckConnectionStringAsync is called correctly.

The backend validates the connection successfully (returns true).

However, when clicking Save, the Angular application never sends the PUT request:

PUT /api/saas/tenants/{id}/connection-strings

This PUT action never appears in browser Network logs, and therefore the backend never receives it.

Permissions are not the problem — my admin role has all SaaS tenant permissions including ManageConnectionStrings.

Questions:

Under what conditions does the Angular SaaS UI skip the PUT request?

Does the UI require the connection string name to always be "Default"?

If the database already contains a connection string with a different name (e.g., "Financial"), does the UI ignore it and therefore never trigger the update?

Is this a known issue in the current ABP Angular version?

  1. Question regarding SQL Server remote instances (critical):

I am trying to use a remote SQL Server instance with the following format:

Server=45.xxx.xxx.xxx\SQLEXPRESS2014;Database=Financial;User Id=xxx;Password=xxx;TrustServerCertificate=True;

The CheckConnectionString endpoint returns TRUE, so the connection works.

However, I want to confirm the expected/official behavior:

Questions:

Does ABP support SQL Server remote instances using IP\InstanceName format, or is ABP officially limited to localhost connections?

If ABP supports remote SQL servers, what is the correct recommended connection-string format for:

Named instances?

SQL Browser disabled?

Specific ports?

When using:

Server=45.xxx.xxx.xxx\InstanceName;

should ABP automatically resolve the SQL Browser port, or must the instance be accessed using:

Server=45.xxx.xxx.xxx,PortNumber;

Is there any known limitation in ABP SaaS tenant connection-string checking related to remote or named SQL Server instances?

Additional context

ABP Commercial 8.x

Frontend: Angular

Backend: ASP.NET Core

Multi-tenancy enabled (Database-per-tenant mode)

CheckConnectionString works fine in all tests

The actual save/PUT never happens

I can provide a SQL dump of SaasTenantConnectionStrings if needed

Thank you very much, I will wait for your guidance.

Hello, I am working on an ABP project (version Pro - Team License). Yesterday everything worked perfectly: I created new entities, generated migrations, updated the database, ran the API, and both Swagger and the Angular UI loaded without issues. I could log in normally using the default admin user.

Today, after reopening the solution, the API behaves unexpectedly:

Swagger and the Angular logo no longer appear when running the API. It looks like the application is not initializing properly.

When I try to log in, I receive an error saying that the ClientId is missing, as if the default OpenIddict client was never seeded.

I tried dropping and recreating the database (using Update-Database):

Sometimes it works, sometimes it does not.

Most of the time, the default admin user is NOT created, which should happen during the DataSeeder execution.

I did not change anything related to authentication, database configuration, or appsettings between yesterday and today.

It seems like:

the DataSeeder is not being executed reliably,

or the project is not connecting to the database during startup,

or OpenIddict initialization is failing silently, causing the Client and admin user seeding to be skipped.

Could you help me understand why the initialization is inconsistent and why the default admin user and default clients are not being created when recreating the DB?

Thank you.

Showing 1 to 5 of 5 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.3.0-preview. Updated on February 26, 2026, 13:35
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.