2017-06-29 61 views
0

這個問題已經被問,但我已經試過到目前爲止似乎無法正常工作角得到queryParameter

ActivatedRoute.queryParams is undefined

Get route query params

我triing找回我的網址的可選查詢參數。如果我們假設我的網址是:localhost:4200/site;query=value,我想檢索值value

template html

<div> 
     <button type="submit" (click)="query()">Se connecter</button> 
    </div> 

component

import {ActivatedRoute} from "@angular/router"; 
... 
query(): void { 
this.queryDebug = this.activatedRoute.queryParams.subscribe(params => {console.log("params: " + JSON.stringify(params))}); 
} 

我有{}console.log的結果,而我期待value。有什麼我失蹤?

回答

0

從您的網址localhost:4200/site;query=value看起來像query是可選param而不是queryParamAngular Doc

可選的路由參數沒有用「?」號分隔,和「&」,因爲它們 將位於URL查詢字符串中。它們用分號隔開「;」 這是矩陣URL符號

所以,你可能必須嘗試使用​​從文檔this.activatedRoute.params

query(): void { 
this.queryDebug = this.activatedRoute.params.subscribe(params => {console.log("params: " + JSON.stringify(params))}); 

範例檢索:

localhost:3000/heroes;id=15;foo=foo

ngOnInit() { 
    this.heroes = this.route.params 
     .switchMap((params: Params) => { 
     this.selectedId = +params['id']; 
     return this.service.getHeroes(); 
     }); 
    } 
+0

我想你的建議,但它沒有工作。我仍然用控制檯得到空的輸出。我嘗試了兩個網址'localhost:4200/site; query = value'和'localhost:4200/site?query = value',但沒有得到我期待的內容,即我的'console.log'輸出中的值'value' – edkeveked

+0

我剛剛發現我的代碼中沒有錯誤。我認爲,如果我更改網址並單擊該按鈕,角度會立即將變化考慮在內;那是我的錯誤。我必須在瀏覽器的地址欄中輸入,以考慮URL中的更改。我的代碼適用於網址'localhost:4200/site; query = value'和'localhost:4200/site?query = value' – edkeveked