我正在努力捕获第三方API传递给我的angular2应用程序的URL查询字符串参数。该网址为http://example.com?oauth_token=123
如何在组件中捕获“oauth_token”的值?我很高兴使用组件路由器进行基本路由,它只是查询字符串。我做了几次尝试,我的最新接收组件看起来像
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
template: ''
})
export class TwitterAuthorisedComponent implements OnInit {
private oauth_token:string;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
console.log('the oauth token is');
console.log( this.route.snapshot.params.oauth_token );
}
}
感谢任何建议。
**更新
如果我注释掉我的所有路由,那么查询参数将会坚持,当我包含路由时,在页面加载时删除查询参数。下面是我的路线文件的精简副本,其中包含一条路线
import {NavigationComponent} from "./navigation/components/navigation.component";
import {TwitterAuthorisedComponent} from "./twitter/components/twitter-authorised.component";
import { provideRouter, RouterConfig } from '@angular/router';
export const routes: RouterConfig = [
{ path: '', component: TwitterAuthorisedComponent }
];
export const appRouterProviders = [
provideRouter(routes)
];
如果删除路线,查询参数就会停止。有什么建议吗?
答案 0 :(得分:2)
我可以使用波纹管解决方案捕捉查询婴儿车。
import { Router, Route, ActivatedRoute } from '@angular/router';
queryParams:string;
constructor(private router: Router, private actRoute: ActivatedRoute)
{
this.queryParams=
this.router.routerState.snapshot.root.queryParams["oauth_token"];
}
使用此方法,您将获得oauth_token到queryParams的值。我觉得这对你很好
如果您需要更新值queryParams,请查询参数更改,您需要添加更多代码。它如下。
import { Router, Route, ActivatedRoute } from '@angular/router';
queryParams:string;
sub:any;
constructor(private router: Router, private actRoute: ActivatedRoute)
{
this.queryParams=
this.router.routerState.snapshot.root.queryParams["oauth_token"];
}
ngOnInit(){
this.sub = this.router.routerState.root.queryParams.subscribe(params => {
this.queryParams = params["oauth_token"];
});
}
希望它对你有用。
答案 1 :(得分:0)
可以通过Router
服务获取查询参数。
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
template: ''
})
export class TwitterAuthorisedComponent implements OnInit {
private oauth_token:string;
constructor(private router: Router) {}
ngOnInit() {
console.log('the oauth token is');
console.log( this.router.routerState.snapshot.queryParams.oauth_token );
}
}
答案 2 :(得分:0)
您可以通过
执行此操作import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
template: ''
})
export class TwitterAuthorisedComponent implements OnInit {
sub: any; //new line added
private oauth_token:string;
constructor(private router: Router) {}
ngOnInit() {
this.sub = this.route.params.subscribe(params => {
let id = +params['oauth_token'];
console.log('the oauth token is');
console.log(id);
});
}
}
希望这会有所帮助。谢谢