我有以下各种状态配置:

(function(angular) {
  'use strict';

  angular.module('myModule')

    .config(function($stateProvider, 'root', 'place-locator') {

      var placeLocatorConfig = {
        url: '/place-locator/{param1}/{param2}?qp1&qp2',
        parent: 'root',
        params: {
          param1: {
            value: null,
            squash: true
          },
          param2: {
            value: null,
            squash: true
          }
        },
        views: {
          main: {
            templateUrl: 'app/placeLocator/placeLocator.tpl.html',
            controller: 'PlaceLocatorController as vm',
            bindings: {
              places: '='
            }
          }
        }
      };

      $stateProvider
        .state('place-locator', placeLocatorConfig);

    });

})(angular);

每当我尝试 $state.transitionTo 一个子状态时,只要URL中的QueryParams是在StateConfig中注册的那些(即 qp1qp2 ),一切正常 .

但是,只要URL包含未在配置中注册的queryParam(例如 qp3 ),它就会在 $state.transitionTo 上被删除

现在,我不确定这些QueryParams的名称是什么 . 但是在 $state.transitionTo 之后我仍然需要它们在URL中 .

如何在不将它们注册为StateConfig的情况下实现此目的?

我看了下面的问题:

Adding query string to UI router route

Angular UI Router - allow ANY query string parameter

Query string parameter in ui-router urls?

但它们都不像我的情况 .

在这种情况下我也尝试了解决方案:

AngularJS UI-Router navigate without removing query params

但这没有用 . 未注册的QueryParams仍然被剥夺 .