From 811194f85488050a5abd9666db0b6d3c42f3e243 Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Thu, 15 May 2025 09:35:30 -0700 Subject: [PATCH] fix(@angular/ssr): SSR should work without `@angular/router` This fixes SSR to ensure serialization is not broken when router is not provided. --- packages/angular/ssr/src/utils/ng.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/angular/ssr/src/utils/ng.ts b/packages/angular/ssr/src/utils/ng.ts index c485784798dd..b92aa51d1d84 100644 --- a/packages/angular/ssr/src/utils/ng.ts +++ b/packages/angular/ssr/src/utils/ng.ts @@ -20,7 +20,7 @@ import { platformServer, ɵrenderInternal as renderInternal, } from '@angular/platform-server'; -import { Router } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; import { Console } from '../console'; import { joinUrlParts, stripIndexHtmlFromURL } from './url'; @@ -98,10 +98,13 @@ export async function renderAngular( // TODO(alanagius): Find a way to avoid rendering here especially for redirects as any output will be discarded. const envInjector = applicationRef.injector; + const routerIsProvided = !!envInjector.get(ActivatedRoute, null); const router = envInjector.get(Router); const lastSuccessfulNavigation = router.lastSuccessfulNavigation; - if (lastSuccessfulNavigation?.finalUrl) { + if (!routerIsProvided) { + hasNavigationError = false; + } else if (lastSuccessfulNavigation?.finalUrl) { hasNavigationError = false; const { finalUrl, initialUrl } = lastSuccessfulNavigation;