diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index a2680d5175d9..1d60841a090d 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -411,26 +411,26 @@ export async function getRoutesFromAngularRouterConfig( injector.get(APP_BASE_HREF, null, { optional: true }) ?? injector.get(PlatformLocation).getBaseHrefFromDOM(); - if (router.config.length) { - const compiler = injector.get(Compiler); + const compiler = injector.get(Compiler); - const serverRoutesConfig = injector.get(SERVER_ROUTES_CONFIG, null, { optional: true }); - let serverConfigRouteTree: RouteTree | undefined; + const serverRoutesConfig = injector.get(SERVER_ROUTES_CONFIG, null, { optional: true }); + let serverConfigRouteTree: RouteTree | undefined; - if (serverRoutesConfig) { - const result = buildServerConfigRouteTree(serverRoutesConfig); - serverConfigRouteTree = result.serverConfigRouteTree; - errors.push(...result.errors); - } + if (serverRoutesConfig) { + const result = buildServerConfigRouteTree(serverRoutesConfig); + serverConfigRouteTree = result.serverConfigRouteTree; + errors.push(...result.errors); + } - if (errors.length) { - return { - baseHref, - routes: routesResults, - errors, - }; - } + if (errors.length) { + return { + baseHref, + routes: routesResults, + errors, + }; + } + if (router.config.length) { // Retrieve all routes from the Angular router configuration. const traverseRoutes = traverseRoutesConfig({ routes: router.config, @@ -478,7 +478,12 @@ export async function getRoutesFromAngularRouterConfig( } } } else { - routesResults.push({ route: '', renderMode: RenderMode.Prerender }); + const renderMode = serverConfigRouteTree?.match('')?.renderMode ?? RenderMode.Prerender; + + routesResults.push({ + route: '', + renderMode, + }); } return { diff --git a/packages/angular/ssr/test/routes/ng-routes_spec.ts b/packages/angular/ssr/test/routes/ng-routes_spec.ts index 82ac36288110..bb0795a156c3 100644 --- a/packages/angular/ssr/test/routes/ng-routes_spec.ts +++ b/packages/angular/ssr/test/routes/ng-routes_spec.ts @@ -361,4 +361,18 @@ describe('extractRoutesAndCreateRouteTree', () => { `Both 'home' and 'shell' routes have their 'renderMode' set to 'AppShell'.`, ); }); + + it('should apply RenderMode matching the wildcard when no Angular routes are defined', async () => { + setAngularAppTestingManifest([], [{ path: '**', renderMode: RenderMode.Server }]); + + const { errors, routeTree } = await extractRoutesAndCreateRouteTree( + url, + /** manifest */ undefined, + /** invokeGetPrerenderParams */ false, + /** includePrerenderFallbackRoutes */ false, + ); + + expect(errors).toHaveSize(0); + expect(routeTree.toObject()).toEqual([{ route: '/', renderMode: RenderMode.Server }]); + }); });