Hello. After upgrading to 8.3.2 (also with 8.3.1), I get the following error in the routing module:
Error: src/app/app-routing.module.ts:190:29 - error TS2322: Type 'Promise<Type<any> | NgModuleFactory<...> | Routes | DefaultExport<Type<any>> | DefaultExport<Routes> | NgModuleFactory<...>>' is not assignable to type 'Type<any> | NgModuleFactory<any> | Routes | Observable<Type<any> | Routes | DefaultExport<Type<any>> | DefaultExport<Routes>> | Promise<...>'.
Type 'Promise<Type<any> | NgModuleFactory<...> | Routes | DefaultExport<Type<any>> | DefaultExport<Routes> | NgModuleFactory<...>>' is not assignable to type 'Promise<Type<any> | NgModuleFactory<any> | Routes | DefaultExport<Type<any>> | DefaultExport<Routes>>'.
Type 'Type<any> | NgModuleFactory<...> | Routes | DefaultExport<Type<any>> | DefaultExport<Routes> | NgModuleFactory<...>' is not assignable to type 'Type<any> | NgModuleFactory<any> | Routes | DefaultExport<Type<any>> | DefaultExport<Routes>'.
Type 'NgModuleFactory<AccountPublicModule>' is not assignable to type 'Type<any> | NgModuleFactory<any> | Routes | DefaultExport<Type<any>> | DefaultExport<Routes>'.
Type 'NgModuleFactory<AccountPublicModule>' is not assignable to type 'NgModuleFactory<any>'.
The types of 'create(...).componentFactoryResolver.resolveComponentFactory(...).inputs' are incompatible between these types.
Type '{ propName: string; templateName: string; transform?: (value: any) => any; }[]' is not assignable to type '{ propName: string; templateName: string; transform?: (value: any) => any; isSignal: boolean; }[]'.
Property 'isSignal' is missing in type '{ propName: string; templateName: string; transform?: (value: any) => any; }' but required in type '{ propName: string; templateName: string; transform?: (value: any) => any; isSignal: boolean; }'.
190 loadChildren: () => import('@volo/abp.ng.account/public').then(m => m.AccountPublicModule.forLazy())
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
node_modules/@angular/core/index.d.ts:1859:9
1859 isSignal: boolean;
~~~~~~~~
'isSignal' is declared here.
node_modules/@angular/router/index.d.ts:1372:44
1372 export declare type LoadChildrenCallback = () => Type<any> | NgModuleFactory<any> | Routes | Observable<Type<any> | Routes | DefaultExport<Type<any>> | DefaultExport<Routes>> | Promise<NgModuleFactory<any> | Type<any> | Routes | DefaultExport<Type<any>> | DefaultExport<Routes>>;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The expected type comes from the return type of this signature.
The module is imported in my routing module the same as the startup template:
{
path: 'account',
loadChildren: () => import('@volo/abp.ng.account/public').then(m => m.AccountPublicModule.forLazy())
},
Using Angular ~18.1.0.
"dependencies": {
"@abp/ng.components": "8.3.2",
"@abp/ng.core": "8.3.2",
"@abp/ng.oauth": "8.3.2",
"@abp/ng.setting-management": "8.3.2",
"@abp/ng.theme.shared": "8.3.2",
"@angular/animations": "~18.1.0",
"@angular/common": "~18.1.0",
"@angular/compiler": "~18.1.0",
"@angular/core": "~18.1.0",
"@angular/forms": "~18.1.0",
"@angular/localize": "~18.1.0",
"@angular/platform-browser": "~18.1.0",
"@angular/platform-browser-dynamic": "~18.1.0",
"@angular/router": "~18.1.0",
...
"@volo/abp.commercial.ng.ui": "8.3.2",
"@volo/abp.ng.account": "8.3.2",
"@volo/abp.ng.audit-logging": "8.3.2",
"@volo/abp.ng.gdpr": "8.3.2",
"@volo/abp.ng.identity": "8.3.2",
"@volo/abp.ng.language-management": "8.3.2",
"@volo/abp.ng.openiddictpro": "8.3.2",
"@volo/abp.ng.saas": "8.3.2",
"@volo/abp.ng.text-template-management": "8.3.2",
"@volosoft/abp.ng.theme.lepton-x": "3.3.1",
...
"rxjs": "7.8.1",
"tslib": "~2.8.0",
"zone.js": "~0.14.10"
},
"devDependencies": {
"@abp/ng.schematics": "8.3.2",
"@angular-devkit/build-angular": "~18.1.0",
"@angular-eslint/builder": "~18.1.0",
"@angular-eslint/eslint-plugin": "~18.1.0",
"@angular-eslint/eslint-plugin-template": "~18.1.0",
"@angular-eslint/schematics": "~18.1.0",
"@angular-eslint/template-parser": "~18.1.0",
"@angular/cli": "~18.1.0",
"@angular/compiler-cli": "~18.1.0",
"@angular/language-service": "~18.1.0",
"@types/node": "~20.16.14",
"@typescript-eslint/eslint-plugin": "~8.9.0",
"@typescript-eslint/parser": "~8.9.0",
...
"ng-packagr": "~18.1.0",
"ngxs-schematic": "^1.1.9",
"protractor": "^7.0.0",
"ts-node": "~10.9.2",
"tslint": "^6.1.3",
"typescript": "~5.5.4"
}
I have tried, deleting yarn.lock/node_modules but no luck. Any ideas?
Thanks
Thanks, that resolved it. I had went ahead and upgraded to node v22 based on Angular 18's compatibility.
Hello, I am trying to override the default fonts imported into my project, and instead self-host them and remove the fetch to rsms.me. I was able to do this in the Angular project by removing the font-bundle imports from the angular.json file and replacing them with my own. But with authorization code flow, the login pages still use the default fonts. I have tried adding a custom font-bundle.css file under this folder structure in the Host project:
and tried adding that to the bundle configuration:
But it does not seem to override the default file:
And is still trying to pull from rsms.me
What am I missing here? Thanks!
After upgrading to ABP 9.2.4, the 'My Account' button in the menu now redirects to the MVC's profile management page even though I have the AccountLayoutModule configured. To reproduce, create two new projects, 9.0.2 and 9.2.4. In both:
app.module.ts
...
AccountAdminConfigModule.forRoot(),
AccountPublicConfigModule.forRoot(),
AccountLayoutModule.forRoot(),
...
app-routing.module.ts
{
path: 'account',
loadChildren: () => import('@volo/abp.ng.account/public').then(m => m.AccountPublicModule.forLazy()),
},
In 9.0.2, clicking 'My Account' navigates to http://localhost:4200/account/manage, while in 9.2.4, a new tab opens with https://localhost:44305/Account/Manage. This results in custom styles and changes to manageProfileTabsService not applying. Please let me know if you are able to reproduce this issue and if there is a workaround.
Thanks that resolved it.
When only 1 language is enabled, the page titles on MVC login/reset password/etc do not show.
In the default layout code, the title is wrapped up with the check if there is more than 1 language:
@{
var hasLanguageSwitch = languageInfo.Languages.Count > 1;
...
}
<div class="card mx-auto" style="max-width: 30rem;">
<div class="card-body p-3 p-sm-4">
@if (hasLanguageSwitch)
{
<div class="align-items-start d-flex justify-content-between mb-2">
<h2 class="lpx-main-title lpx-login-title m-0 me-auto"> @PageLayout.Content.Title </h2>
<div class="dropdown btn-group ms-auto" aria-labelledby="languageDropdown">
<button class="btn btn-sm btn-light dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-translate me-1"></i> @languageInfo.CurrentLanguage.DisplayName
</button>
...
}
</div>
</div>
I've fixed this by overriding the layout, moving the @if block to not include the page title, but I would prefer this be fixed in the source so I don't need to override if not necessary. Fix:
@{
var hasLanguageSwitch = languageInfo.Languages.Count > 1;
...
}
<div class="card mx-auto" style="max-width: 30rem;">
<div class="card-body p-3 p-sm-4">
<div class="align-items-start d-flex justify-content-between mb-2">
<h2 class="lpx-main-title lpx-login-title m-0 me-auto"> @PageLayout.Content.Title </h2>
@if (hasLanguageSwitch)
{
<div class="dropdown btn-group ms-auto" aria-labelledby="languageDropdown">
<button class="btn btn-sm btn-light dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-translate me-1"></i> @languageInfo.CurrentLanguage.DisplayName
</button>
...
}
</div>
</div>
</div>