diff --git a/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts b/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts
index 0d9f82ea25..6ee751f9af 100644
--- a/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts
+++ b/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts
@@ -9,7 +9,7 @@ const routes: Routes = [
},
{
path: 'account',
- loadChildren: () => import('@abp/ng.account').then(m => m.AccountModule.forLazy()),
+ loadChildren: () => import('@abp/ng.account').then(m => m.accountRoutes),
},
{
path: 'identity',
diff --git a/npm/ng-packs/packages/account/src/lib/account.routes.ts b/npm/ng-packs/packages/account/src/lib/account.routes.ts
index 64789c969a..2d0f72b75e 100644
--- a/npm/ng-packs/packages/account/src/lib/account.routes.ts
+++ b/npm/ng-packs/packages/account/src/lib/account.routes.ts
@@ -2,7 +2,8 @@ import {
authGuard,
ReplaceableComponents,
ReplaceableRouteContainerComponent,
- RouterOutletComponent,
+ ReplaceableRouteContainerStandaloneComponent,
+ RouterOutletStandaloneComponent,
} from '@abp/ng.core';
import { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';
@@ -13,20 +14,21 @@ import { ResetPasswordComponent } from './components/reset-password/reset-passwo
import { eAccountComponents } from './enums/components';
import { authenticationFlowGuard } from './guards';
import { accountExtensionsResolver } from './resolvers';
+import { Routes } from '@angular/router';
import { provideAccount } from './account';
const canActivate = [authenticationFlowGuard];
-export const accountRoutes = [
+export const accountRoutes: Routes = [
{
path: '',
- component: RouterOutletComponent,
+ component: RouterOutletStandaloneComponent,
providers: [...provideAccount()],
children: [
{ path: '', pathMatch: 'full', redirectTo: 'login' },
{
path: 'login',
- component: ReplaceableRouteContainerComponent,
+ component: ReplaceableRouteContainerStandaloneComponent,
canActivate,
data: {
replaceableComponent: {
@@ -38,7 +40,7 @@ export const accountRoutes = [
},
{
path: 'register',
- component: ReplaceableRouteContainerComponent,
+ component: ReplaceableRouteContainerStandaloneComponent,
canActivate,
data: {
replaceableComponent: {
@@ -50,7 +52,7 @@ export const accountRoutes = [
},
{
path: 'forgot-password',
- component: ReplaceableRouteContainerComponent,
+ component: ReplaceableRouteContainerStandaloneComponent,
canActivate,
data: {
@@ -63,7 +65,7 @@ export const accountRoutes = [
},
{
path: 'reset-password',
- component: ReplaceableRouteContainerComponent,
+ component: ReplaceableRouteContainerStandaloneComponent,
canActivate: [],
data: {
tenantBoxVisible: false,
@@ -76,7 +78,7 @@ export const accountRoutes = [
},
{
path: 'manage',
- component: ReplaceableRouteContainerComponent,
+ component: ReplaceableRouteContainerStandaloneComponent,
canActivate: [authGuard],
resolve: [accountExtensionsResolver],
data: {
diff --git a/npm/ng-packs/packages/account/src/public-api.ts b/npm/ng-packs/packages/account/src/public-api.ts
index f9df16ebc7..26b2139696 100644
--- a/npm/ng-packs/packages/account/src/public-api.ts
+++ b/npm/ng-packs/packages/account/src/public-api.ts
@@ -7,3 +7,5 @@ export * from './lib/services';
export * from './lib/tokens';
export * from './lib/utils';
export * from './lib/resolvers';
+export * from './lib/account.routes';
+export * from './lib/account';
diff --git a/npm/ng-packs/packages/core/src/lib/components/index.ts b/npm/ng-packs/packages/core/src/lib/components/index.ts
index da3c72a69f..11aed8ffae 100644
--- a/npm/ng-packs/packages/core/src/lib/components/index.ts
+++ b/npm/ng-packs/packages/core/src/lib/components/index.ts
@@ -1,3 +1,4 @@
export * from './dynamic-layout.component';
export * from './replaceable-route-container.component';
export * from './router-outlet.component';
+export * from './replaceable-route-container-standalone.component';
diff --git a/npm/ng-packs/packages/core/src/lib/components/replaceable-route-container-standalone.component.ts b/npm/ng-packs/packages/core/src/lib/components/replaceable-route-container-standalone.component.ts
new file mode 100644
index 0000000000..c0502ff542
--- /dev/null
+++ b/npm/ng-packs/packages/core/src/lib/components/replaceable-route-container-standalone.component.ts
@@ -0,0 +1,47 @@
+import { Component, OnInit, Type } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
+import { distinctUntilChanged } from 'rxjs/operators';
+import { ReplaceableComponents } from '../models/replaceable-components';
+import { ReplaceableComponentsService } from '../services/replaceable-components.service';
+import { SubscriptionService } from '../services/subscription.service';
+import { CommonModule } from '@angular/common';
+
+@Component({
+ selector: 'abp-replaceable-route-container',
+ template: `
+
+ `,
+ imports: [CommonModule],
+ providers: [SubscriptionService],
+})
+export class ReplaceableRouteContainerStandaloneComponent implements OnInit {
+ defaultComponent!: Type;
+
+ componentKey!: string;
+
+ externalComponent?: Type;
+
+ constructor(
+ private route: ActivatedRoute,
+ private replaceableComponents: ReplaceableComponentsService,
+ private subscription: SubscriptionService,
+ ) {}
+
+ ngOnInit() {
+ this.defaultComponent = this.route.snapshot.data.replaceableComponent.defaultComponent;
+ this.componentKey = (
+ this.route.snapshot.data.replaceableComponent as ReplaceableComponents.RouteData
+ ).key;
+
+ const component$ = this.replaceableComponents
+ .get$(this.componentKey)
+ .pipe(distinctUntilChanged());
+
+ this.subscription.addOne(
+ component$,
+ (res = {} as ReplaceableComponents.ReplaceableComponent) => {
+ this.externalComponent = res.component;
+ },
+ );
+ }
+}
diff --git a/npm/ng-packs/packages/core/src/lib/components/router-outlet.component.ts b/npm/ng-packs/packages/core/src/lib/components/router-outlet.component.ts
index 4dd1e586ee..9438622b6c 100644
--- a/npm/ng-packs/packages/core/src/lib/components/router-outlet.component.ts
+++ b/npm/ng-packs/packages/core/src/lib/components/router-outlet.component.ts
@@ -1,4 +1,5 @@
import { Component } from '@angular/core';
+import { RouterModule } from '@angular/router';
@Component({
standalone: false,
@@ -6,3 +7,10 @@ import { Component } from '@angular/core';
template: ` `,
})
export class RouterOutletComponent {}
+
+@Component({
+ selector: 'abp-router-outlet',
+ template: ` `,
+ imports: [RouterModule],
+})
+export class RouterOutletStandaloneComponent {}