2017-08-15 109 views
1

所以基本上我無法用我的查詢參數得到正確的結果。例如,我們有一個查詢參數,看起來像這樣:在Angular 2中處理帶有多個問號的查詢參數

?encryptedId=zxcvbnm?:112233 

返回的結果也只是ZXCVBNM,第二個問號,所有後續字符,它都被省略。

我已經嘗試過這樣的:

this.businessId = this.router.parseUrl(this.router.url).queryParams["bid"]; 

這:

this.activatedRoute.queryParams.subscribe((queryParams: Params) => { 
     this.businessId = queryParams['id']; 
    }); 

但兩者的代碼返回相同的結果。我想捕捉一切。請幫忙。謝謝!

回答

2

基礎你需要傳遞到URL與encodeURIComponent

可以嘗試encodeURIComponent('zxcvbnm?:112233')之前對其進行編碼您的瀏覽器控制檯,你會看到結果。

所以?encryptedId=zxcvbnm?:112233將成爲?encryptedId=zxcvbnm%3F%3A112233

然後從你的組件,你可以找回如下所示。我已經測試過它。

export class QueryParamsComponent implements OnInit { 
    constructor(
     private router: Router, 
     private route: ActivatedRoute) { 
    } 

    ngOnInit() { 
     let queryParams = this.route.snapshot.queryParams; 
     const encryptedId = queryParams['encryptedId']; 
    } 
} 
0

爲什麼不土特產品與整個URL的router snapshot弄個試圖分裂它的?

@Component({templateUrl:'./my-component.html'}) 
    class MyComponent { 
     constructor(route: ActivatedRoute) { 
     const id: string = route.snapshot.toString(); 
     } 
    } 
+0

很抱歉,這應該是一個評論,我是手機,我加入它錯誤地回答,會刪除它儘快 –

+0

很抱歉的壞縮進。你可以查看激活路由文檔 –

+0

我發現我必須對它進行編碼才能修復它。編碼工作。謝謝! – missellorin