需要将参数作为查询/路径传递,但在URL上不可见

时间:2018-07-11 07:03:46

标签: angular typescript angular6

我需要将参数从一种途径传递到另一种途径,但用户看不到它。我在Angular 6中需要它。

2 个答案:

答案 0 :(得分:0)

如果您不想更改网址,则可以使用skipLocationChange策略。

https://angular.io/api/router/NavigationExtras

答案 1 :(得分:0)

您可以使用matrix params

然后使用Angular locationrouter服务读取并覆盖URL历史记录。

它不优雅,但是可以..并且满足您的要求。

检查和重写位置历史记录的示例:

this.router.events.pipe(filter(event => event instanceof NavigationEnd))
.subscribe((event: NavigationEnd) => {
  const matrixParams = this.location.path().split(';');

  ... do something with the matrixParam

  if(matrixParams.length > 1) {
    this.location.replaceState(matrixParams[0])
  }

}));

其他想法(如上所述)

  • 使用服务传递数据,在OnInit中检查数据
  • 如前所述,使用@Input()在组件之间传递它