我使用 angular2.0.0-beta.7。当一个组件被加载到一个路径上时,就像/path?query=value1它被重定向到/path. 为什么要删除 GET 参数?如何保存参数?
/path?query=value1
/path
我在路由器中有错误。如果我有一条主要路线
@RouteConfig([ { path: '/todos/...', name: 'TodoMain', component: TodoMainComponent } ])
我的孩子路线像
@RouteConfig([ { path: '/', component: TodoListComponent, name: 'TodoList', useAsDefault:true }, { path: '/:id', component: TodoDetailComponent, name:'TodoDetail' } ])
那么我无法在 TodoListComponent 中获取参数。我能够得到
params("/my/path;param1=value1;param2=value2")
但我想要经典
query params("/my/path?param1=value1¶m2=value2")
通过注入ActivatedRouteone 的实例可以订阅各种 observable,包括 aqueryParams和 a paramsobservable:
ActivatedRoute
queryParams
params
import {Router, ActivatedRoute, Params} from '@angular/router'; import {OnInit, Component} from '@angular/core'; @Component({...}) export class MyComponent implements OnInit { constructor(private activatedRoute: ActivatedRoute) {} ngOnInit() { // Note: Below 'queryParams' can be replaced with 'params' depending on your requirements this.activatedRoute.queryParams.subscribe(params => { const userId = params['userId']; console.log(userId); }); } }
关于退订的说明
@Reto 和 @codef0rmer 非常正确地指出,根据官方文档,在这种情况下unsubscribe(),组件内部onDestroy()方法是不必要的。这已从我的代码示例中删除。(请参阅本教程中的蓝色警报框)
unsubscribe()
onDestroy()