Skip to content

Commit c88a115

Browse files
committed
refactor(@angular/ssr): replace logic to determine the original URL
Using `currentNavigation` might not work in all cases as this will be null when the navigate has already completed.
1 parent 58dcfd1 commit c88a115

File tree

1 file changed

+6
-7
lines changed
  • packages/angular/ssr/src/utils

1 file changed

+6
-7
lines changed

packages/angular/ssr/src/utils/ng.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,12 @@ export async function renderAngular(
6060
serverContext: string,
6161
): Promise<{ hasNavigationError: boolean; redirectTo?: string; content: () => Promise<string> }> {
6262
// A request to `http://www.example.com/page/index.html` will render the Angular route corresponding to `http://www.example.com/page`.
63-
const urlToRender = stripIndexHtmlFromURL(url).toString();
63+
const urlToRender = stripIndexHtmlFromURL(url);
6464
const platformRef = platformServer([
6565
{
6666
provide: INITIAL_CONFIG,
6767
useValue: {
68-
url: urlToRender,
68+
url: urlToRender.toString(),
6969
document: html,
7070
},
7171
},
@@ -96,24 +96,23 @@ export async function renderAngular(
9696
applicationRef = await bootstrap({ platformRef });
9797
}
9898

99-
const envInjector = applicationRef.injector;
100-
const router = envInjector.get(Router);
101-
const initialUrl = router.currentNavigation()?.initialUrl.toString();
102-
10399
// Block until application is stable.
104100
await applicationRef.whenStable();
105101

106102
// TODO(alanagius): Find a way to avoid rendering here especially for redirects as any output will be discarded.
103+
const envInjector = applicationRef.injector;
107104
const routerIsProvided = !!envInjector.get(ActivatedRoute, null);
105+
const router = envInjector.get(Router);
108106
const lastSuccessfulNavigation = router.lastSuccessfulNavigation();
109107

110108
if (!routerIsProvided) {
111109
hasNavigationError = false;
112-
} else if (lastSuccessfulNavigation?.finalUrl && initialUrl !== null) {
110+
} else if (lastSuccessfulNavigation?.finalUrl) {
113111
hasNavigationError = false;
114112

115113
const { finalUrl } = lastSuccessfulNavigation;
116114
const finalUrlStringified = finalUrl.toString();
115+
const initialUrl = `${urlToRender.pathname}${urlToRender.search}${urlToRender.hash}`;
117116

118117
if (initialUrl !== finalUrlStringified) {
119118
const baseHref =

0 commit comments

Comments
 (0)