fix(router): update route snapshot before emit new values (#13558)
Closes #12912
This commit is contained in:
@ -328,22 +328,23 @@ function serializeNode(node: TreeNode<ActivatedRouteSnapshot>): string {
|
||||
*/
|
||||
export function advanceActivatedRoute(route: ActivatedRoute): void {
|
||||
if (route.snapshot) {
|
||||
if (!shallowEqual(route.snapshot.queryParams, route._futureSnapshot.queryParams)) {
|
||||
const currentSnapshot = route.snapshot;
|
||||
route.snapshot = route._futureSnapshot;
|
||||
if (!shallowEqual(currentSnapshot.queryParams, route._futureSnapshot.queryParams)) {
|
||||
(<any>route.queryParams).next(route._futureSnapshot.queryParams);
|
||||
}
|
||||
if (route.snapshot.fragment !== route._futureSnapshot.fragment) {
|
||||
if (currentSnapshot.fragment !== route._futureSnapshot.fragment) {
|
||||
(<any>route.fragment).next(route._futureSnapshot.fragment);
|
||||
}
|
||||
if (!shallowEqual(route.snapshot.params, route._futureSnapshot.params)) {
|
||||
if (!shallowEqual(currentSnapshot.params, route._futureSnapshot.params)) {
|
||||
(<any>route.params).next(route._futureSnapshot.params);
|
||||
}
|
||||
if (!shallowEqualArrays(route.snapshot.url, route._futureSnapshot.url)) {
|
||||
if (!shallowEqualArrays(currentSnapshot.url, route._futureSnapshot.url)) {
|
||||
(<any>route.url).next(route._futureSnapshot.url);
|
||||
}
|
||||
if (!equalParamsAndUrlSegments(route.snapshot, route._futureSnapshot)) {
|
||||
if (!equalParamsAndUrlSegments(currentSnapshot, route._futureSnapshot)) {
|
||||
(<any>route.data).next(route._futureSnapshot.data);
|
||||
}
|
||||
route.snapshot = route._futureSnapshot;
|
||||
} else {
|
||||
route.snapshot = route._futureSnapshot;
|
||||
|
||||
@ -356,4 +357,4 @@ export function advanceActivatedRoute(route: ActivatedRoute): void {
|
||||
export function equalParamsAndUrlSegments(
|
||||
a: ActivatedRouteSnapshot, b: ActivatedRouteSnapshot): boolean {
|
||||
return shallowEqual(a.params, b.params) && equalSegments(a.url, b.url);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user