diff --git a/goldens/public-api/router/index.md b/goldens/public-api/router/index.md index 979d53735c4c..ba6341cfc93d 100644 --- a/goldens/public-api/router/index.md +++ b/goldens/public-api/router/index.md @@ -388,9 +388,11 @@ export class NavigationError extends RouterEvent { constructor( id: number, url: string, - error: any); + error: any, + target?: RouterStateSnapshot | undefined); // (undocumented) error: any; + readonly target?: RouterStateSnapshot | undefined; // (undocumented) toString(): string; // (undocumented) diff --git a/packages/router/src/events.ts b/packages/router/src/events.ts index 532643408c89..1bea49500e3f 100644 --- a/packages/router/src/events.ts +++ b/packages/router/src/events.ts @@ -244,7 +244,14 @@ export class NavigationError extends RouterEvent { /** @docsNotRequired */ url: string, /** @docsNotRequired */ - public error: any) { + public error: any, + /** + * The target of the navigation when the error occurred. + * + * Note that this can be `undefined` because an error could have occurred before the + * `RouterStateSnapshot` was created for the navigation. + */ + readonly target?: RouterStateSnapshot) { super(id, url); } diff --git a/packages/router/src/router.ts b/packages/router/src/router.ts index dbc529113e68..6be82753ba2d 100644 --- a/packages/router/src/router.ts +++ b/packages/router/src/router.ts @@ -970,8 +970,9 @@ export class Router { * the pre-error state. */ } else { this.restoreHistory(t, true); - const navError = - new NavigationError(t.id, this.serializeUrl(t.extractedUrl), e); + const navError = new NavigationError( + t.id, this.serializeUrl(t.extractedUrl), e, + t.targetSnapshot ?? undefined); eventsSubject.next(navError); try { t.resolve(this.errorHandler(e));