Javascript 在GET请求中使用激活的Route param变量返回null
我有一个组件正在侦听一个可观察对象,该对象根据字符串中提供的名称返回信息 我想通过在GET请求中传入激活路由参数的变量来为可观察对象提供名称。问题是,当我在服务的GET请求中使用变量时,URL没有检测到我的变量,请求返回“null” 我怀疑我的问题在于我的组件中的ngOnit。我的Javascript 在GET请求中使用激活的Route param变量返回null,javascript,angular,parameters,get,angular-httpclient,Javascript,Angular,Parameters,Get,Angular Httpclient,我有一个组件正在侦听一个可观察对象,该对象根据字符串中提供的名称返回信息 我想通过在GET请求中传入激活路由参数的变量来为可观察对象提供名称。问题是,当我在服务的GET请求中使用变量时,URL没有检测到我的变量,请求返回“null” 我怀疑我的问题在于我的组件中的ngOnit。我的getPlayer(playerCode)中的playerCode。。我只是不知道为什么 如果我的playerCode是一个字符串,并且我在请求中将其附加到我的URL中,那么这不应该起作用吗 在我的组件中: ngOnI
getPlayer(playerCode)
中的playerCode
。。我只是不知道为什么
如果我的playerCode是一个字符串,并且我在请求中将其附加到我的URL中,那么这不应该起作用吗
在我的组件中:
ngOnInit() {
const playerCode = this.route.snapshot.paramMap.get('player');
this.playerService.getPlayer(playerCode).pipe(
switchMap( player => {
let playerData = player["data"][0];
let anotherID = playerData.id;
return this.playerService.getSeasonStats(anotherID);
}))
.subscribe(id => this.player = id);
}
在URL中使用字符串变量的我的服务:
getPlayer(player: string):Observable<Player[]> {
let getHeaders = new HttpHeaders({'Authorization':'API_Key', 'Accept': 'application/vnd.api+json'});
return this.http.get<Player[]>(`https://api.pubg.com/shards/steam/players?filter[playerNames]=`+ player, { observe:'body', responseType: 'json', headers: getHeaders, });
}
问题在于你的路线。它将首先匹配第一条路线,因此将忽略您的动态变量。将路由更改为:
const routes: Routes = [
{ path: 'players', pathMatch: 'full', component: CareerComponent },
{ path: 'players/:player', component: CareerComponent },
{ path: '**', redirectTo: 'players' }
这将确保当您的url为
players/0203
时,它将匹配第二条路线,而不是第一条路线。问题在于您的路线。它将首先匹配第一条路线,因此将忽略您的动态变量。将路由更改为:
const routes: Routes = [
{ path: 'players', pathMatch: 'full', component: CareerComponent },
{ path: 'players/:player', component: CareerComponent },
{ path: '**', redirectTo: 'players' }
这将确保当您的url为players/0203
时,它将匹配第二条路线,而不是第一条路线。尝试使用
const routeparams = this.route.snapshot.queryParams
它将返回一个包含所有参数和值的对象,您可以
然后,您可以通过以下方式获得球员为您服务的价值:
routeparams['player']
尝试使用
const routeparams = this.route.snapshot.queryParams
它将返回一个包含所有参数和值的对象,您可以
然后,您可以通过以下方式获得球员为您服务的价值:
routeparams['player']
感谢您的回复!刚刚尝试了这个,但我仍然看到
https://api.pubg.com/shards/steam/players?filter[playerNames]=null
尽管:(在这里创建了一个stackblitz:Argh,所以我错过了一个非常愚蠢的东西><我在我的应用程序组件中注释了我的东西..你的两个答案都有帮助,但我将C_Ogo's标记为答案,因为我的路线中没有路径匹配。这可能也是我的问题。但谢谢你们:)感谢您的回复!刚刚尝试了这个,但我仍然看到https://api.pubg.com/shards/steam/players?filter[playerNames]=null
尽管:(在这里创建了一个stackblitz:Argh,所以我错过了一个非常愚蠢的东西><我在我的应用程序组件中注释了我的东西..你的两个答案都有帮助,但我将C_Ogo's标记为答案,因为我的路线中没有路径匹配。这可能也是我的问题。但谢谢你们:)