diff --git a/packages/@ember/-internals/routing/lib/system/router.ts b/packages/@ember/-internals/routing/lib/system/router.ts index 8bc0150282a..7e7006ea9b3 100644 --- a/packages/@ember/-internals/routing/lib/system/router.ts +++ b/packages/@ember/-internals/routing/lib/system/router.ts @@ -1063,7 +1063,10 @@ class EmberRouter extends EmberObject { return true; } - if (_fromRouterService && presentProp !== false) { + if (_fromRouterService && presentProp !== false && qp.urlKey !== qp.prop) { + // assumptions (mainly from current transitionTo_test): + // - this is only supposed to be run when there is an alias to a query param and the alias is used to set the param + // - when there is no alias: qp.urlKey == qp.prop return false; } diff --git a/packages/ember/tests/routing/router_service_test/transitionTo_test.js b/packages/ember/tests/routing/router_service_test/transitionTo_test.js index 4be05d10a45..cf276e91f44 100644 --- a/packages/ember/tests/routing/router_service_test/transitionTo_test.js +++ b/packages/ember/tests/routing/router_service_test/transitionTo_test.js @@ -6,6 +6,7 @@ import { run } from '@ember/runloop'; import { get } from '@ember/-internals/metal'; import { RouterTestCase, moduleFor } from 'internal-test-helpers'; import { InternalTransition as Transition } from 'router_js'; +import { inject as service } from '@ember/service'; moduleFor( 'Router Service - transitionTo', @@ -362,5 +363,31 @@ moduleFor( }, 'You passed the `cont_sort` query parameter during a transition into parent.child, please update to url_sort'); }); } + + ['@test RouterService#transitionTo with application query params when redirecting form a different route']( + assert + ) { + assert.expect(1); + + this.add( + 'route:parent.child', + Route.extend({ + router: service(), + beforeModel() { + this.router.transitionTo('parent'); + }, + }) + ); + this.add( + 'controller:parent', + Controller.extend({ + queryParams: ['url_sort'], + }) + ); + + return this.visit('/child?url_sort=a').then(() => { + assert.equal(this.routerService.get('currentURL'), '/?url_sort=a'); + }); + } } );