Hello, apologies for the delayed response.
We created a startup template (layered with Angular) and we noticed there is a delay in loading CSS, and it takes too much time How can we avoid this delay?
I couldn’t reproduce the issue on my end. Could you please confirm whether the problem still persists? If so, kindly share additional details such as the ABP version you're using, your operating system, and the browser in question. If possible, you can also share a reproducible example of your project by emailing it to sumeyye.kurtulus@volosoft.com so we can investigate further.
Also, are there any documents that describe how to change the login page to be in Angular instead of redirecting to the backend?
Yes, you can implement a fully client-side login using the Resource Owner Password Flow. You’ll find more details in the official documentation here: https://abp.io/docs/latest/framework/ui/angular/account-module
Thank you for sharing the additional details. After reviewing your project and running a few tests, it appears that the issue stems from redundant query parameters in the URL. As a temporary workaround, we recommend sanitizing the URL before passing it to Angular’s router or any relevant authentication service.
In the meantime, you can try implementing the following provider-based approach to handle this. Please let us know if this resolves the issue on your end while we continue investigating and work toward a permanent fix.
// url-sanitizer.ts
import { provideAppInitializer } from '@angular/core';
export const SANITIZE_URL = [
provideAppInitializer(() => {
sanitizeStartupUrl();
}),
];
export function sanitizeStartupUrl() {
const currentUrl = window.location.href;
if (currentUrl.endsWith('?&&')) {
const cleanUrl = window.location.origin + window.location.pathname;
window.location.replace(cleanUrl);
}
}
// app.module.ts
@NgModule({
providers: [
...
SANITIZE_URL,
],
bootstrap: [AppComponent],
})
export class AppModule {}
Sure, I forgot sharing my address. You can email me via sumeyye.kurtulus@volosoft.com
Hello, I will check and get back to you soon. Thank you for your patience and cooperation.
Hello! You're right—the generated proxy service is reflecting the lookup properties based on the navigation fields, and in this case, it's duplicating them due to both pointing to the same model (Grade).
This behavior comes from the controller generation pattern, which typically results in something like:
[HttpGet]
[Route("entity-one-lookup")]
public virtual Task<PagedResultDto<LookupDto<Guid>>> GetEntityOneLookupAsync(LookupRequestDto input)
{
return _entityThreesAppService.GetEntityOneLookupAsync(input);
}
The duplication issue is acknowledged and we're planning to address it in a future release. For now, the manual removal workaround is the best option—though we understand it's not ideal, especially when files are regenerated.
If you believe the issue stems more from the controller generation logic itself, feel free to share more details and I’d be happy to look into it further with you.
Yes, you can safely migrate your Angular project to use the standalone structure in Angular 19.
The components <abp-loader-bar> and <abp-dynamic-layout> are not standalone; they are declared and exported by the ThemeSharedModule. Therefore, you shouldn’t encounter issues related to them during the migration.
Let us know if you need any further help.
I'm glad to hear the workaround resolved the issue.
Thank you for giving mode details on that. However, I cannot produce the same problem on my end. Could you specify which package manager you use? You can also create a minimal reproducible example and send it to this address sumeyye.kurtulus@volosoft.com, so that I can assist you further.