|
3 | 3 | import "../matchers.ts"
|
4 | 4 |
|
5 | 5 | import { ResolveContext, State, PathNode, Resolvable } from "../../src/core";
|
6 |
| -import { omit, pick, forEach, copy } from "../../src/core"; |
| 6 | +import { copy } from "../../src/core"; |
7 | 7 |
|
8 | 8 | import Spy = jasmine.Spy;
|
9 | 9 | import {services} from "../../src/common/coreservices";
|
@@ -365,6 +365,39 @@ describe('Resolvables system:', function () {
|
365 | 365 | done();
|
366 | 366 | });
|
367 | 367 | });
|
| 368 | + |
| 369 | + // Test for #2796 |
| 370 | + it("should not re-resolve data, when redirecting to self with dynamic parameter update", (done) => { |
| 371 | + let $registry = router.stateRegistry; |
| 372 | + let $state = router.stateService; |
| 373 | + let $transitions = router.transitionService; |
| 374 | + let resolveCount = 0; |
| 375 | + |
| 376 | + $registry.register({ |
| 377 | + name: 'dynamic', |
| 378 | + url: '/dynamic/{param}', |
| 379 | + params: { |
| 380 | + param: { dynamic: true } |
| 381 | + }, |
| 382 | + resolve: { |
| 383 | + data: () => { |
| 384 | + new Promise(resolve => resolve('Expensive data ' + resolveCount++)) |
| 385 | + } |
| 386 | + } |
| 387 | + }); |
| 388 | + |
| 389 | + $transitions.onEnter({entering: "dynamic"}, trans => { |
| 390 | + if (trans.params()['param'] === 'initial') |
| 391 | + return $state.target("dynamic", { param: 'redirected' }); |
| 392 | + }); |
| 393 | + |
| 394 | + $state.go("dynamic", { param: 'initial'}).then(() => { |
| 395 | + expect($state.current.name).toBe("dynamic"); |
| 396 | + expect($state.params['param']).toBe('redirected'); |
| 397 | + expect(resolveCount).toBe(1); |
| 398 | + done(); |
| 399 | + }); |
| 400 | + }); |
368 | 401 | });
|
369 | 402 |
|
370 | 403 |
|
0 commit comments