查询参数值未在 angularjs 路由器中更新?

Query Param value is not updated in angularjs router?

我已经用一个常量参数(页面)、一个动态参数(id)、一个查询参数(日期)定义了我的状态,就像这样。

   $stateProvider.state('test', {
   url: '/page/:id?date',
   controller: 'MyCtrl'       
 });

我通过传递查询参数从我的控制器调用此状态

$state.go("test", {id: '5',date:'06/09/2016'});

调用这个状态后我得到参数,

console.log($stateParams.id) -> '5';
console.log($stateParams.date) -> '06/09/2016'(as expected results)

我再次从我的控制器调用相同的状态,但没有像这样传递查询参数。

$state.go("test", {id: '7'});

现在我得到以下状态参数

console.log($stateParams.id) -> '7';(expected)
console.log($stateParams.date) -> '06/09/2016';(which shouldn't be right here.)

$stateParams.date应该是未定义的,因为我在调用状态时没有传递它。但是在Url中默认是passing的,我是passed一次的。由于它是可选参数,因此在不通过时应将其忽略。如何在不传递参数的情况下再次调用相同状态时使其成为'Undefined'?我知道如果我通过 $stateParams.date=null 或其他名称它会反映出来。但是我不需要通过我的路由器url?还有其他方法可以实现吗?

更新 1: 在发布答案后,我使用“{inherit:false}”作为预期结果。但它没有继承我在调用状态时未传递的任何参数值。但我不想只继承可选的参数值。请看下面的代码。

  $stateProvider.state('test', {
   url: '/page/:id/:type?date',
   controller: 'MyCtrl'       
 });

这里我必须动态参数 id 和类型。如果假设我只使用 id 的更新值调用,则类型不会被继承。但我想继承类型参数值而不是日期(条件参数)值。

$state.go("test", {id: '3'},{inherit:false});

console.log($stateParams.type) -> 未定义。(这里我希望 'type' 参数值应该被继承而不通过。因为我不想更新值'type'。我只想保持之前的值。无论如何要实现这个?

为函数调用添加另一个参数; {inherit:false} 告诉 $state.go() 不要继承以前的值。

$state.go("test", {id: '7'}, {inherit: false});

inherit 的默认值是 true,如 the docs here 中所述。