Angular router.navigate 使用数组作为 queryParams 列表

Ben*_*cot 10 query-string angular

我在使用表单构建 queryParams 对象后进行导航:

options {
    ...
    words: (4) ["chuck", "norris", "vs", "keanu", "reeves"]
}
Run Code Online (Sandbox Code Playgroud)

然后navigate使用该对象更新 URL 的参数:

this.router.navigate(['/search'], { queryParams: options });
Run Code Online (Sandbox Code Playgroud)

每个条目的URLwords参数都是重复的,如下所示:

/search?words=chuck&words=norris&words=vs&words=keanu&words=reeves
Run Code Online (Sandbox Code Playgroud)

我们如何正确地传入一个数组queryParams

链接: angular.io/api/router/Router#navigate alligator.io/angular/query-parameters

queryParamsHandling 对此没有影响。这是StackBlitz 的重现。

Gha*_*her 10

您正在以正确的方式执行此操作,只需在组件中使用params.getAll/search即可:

words: string[];

constructor(private route: ActivatedRoute) {
}

ngOnInit() {
  this.route.queryParamMap.subscribe(params => this.words = params.getAll('words'));
}

Run Code Online (Sandbox Code Playgroud)

更新:stackblitz 上的工作示例:Angular-query-params-pass-array

  • @BenRacicot 所以问题是“words”参数被重复了?如果是这样,我认为这不是问题,这是在查询参数中传递数组的正确方法。 (3认同)
  • 谢谢@Gais Zaher,但我不想获取参数。我试图在建立要设置的对象后设置参数。 (2认同)