![](/img/trans.png)
[英]How to get multiple parameters with same name from a URL in JavaScript
[英]How to get multiple parameters with same name from a URL but with different and unique index?
我正在開發 angular 應用程序,並且需要將 url 中的不同參數作為查詢參數傳遞。 但是我們需要基於 id 傳遞參數,例如:param[1]=23,這里 1 和 23 是動態的。 我已成功通過 url 中的參數,例如:
var myArrayQry = data.map(function(el) {
return 'params[' + el.id + ']=' + el.quantity;
}).join('&')
我們最終的 url 就像:
http://example.com?params[1]=23¶m[7]=26¶ms[4]=27
當我們想要獲取查詢參數時,我們使用了如下查詢參數:
this.route.queryParams.subscribe(res => {
console.log(res)
})
將查詢參數返回為 object,我怎樣才能獲得這些參數? 因為名稱是動態的。 有什么建議嗎?
我試過的:我試過JSON.stringify
和getAll()
方法,但沒有任何效果。
我認為不需要手動將查詢參數插入到 URL 中。 您可以利用 Angular 路由器的queryParams
選項。
注意我還用Array#reduce
替換了Array#map
以從數組創建 object。 注意沒有重疊的id
。 如果是這樣,后一個值將覆蓋之前的值。
組件 1 (*.ts)
import { Router } from "@angular/router";
constructor(private router: Router) {}
queryParams = data.reduce((acc, curr) => {
acc[curr.id] = curr.quantity;
return acc;
}, Object.create(null));
this.router.navigate(["/example"], {queryParams: queryParams});
或者在模板中使用
組件 1 (*.html)
<button [routerLink]="['/example']" [queryParams]="queryParams">Click me</button>
並在組件 2 中獲取它。
組件 2 (*.ts)
import { ActivatedRouter } from "@angular/router";
constructor(private actRouter: Router) {}
ngOnInit() {
this.actRouter.queryParams.subscribe(params => console.log(params));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.