我使用angular2.0.0-beta.7。当一个组件加载在路径“/ path?query = value1”时,它被重定向到“/ path”。为什么GET param被删除?如何保存参数?
我在路由器有一个错误。如果我有一条主路线
@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")
Angular 2.0 FINAL解决方案。看来RouteParams已被弃用。试试这个:
原文链接:https://www.f2er.com/angularjs/146034.htmlimport {Router,ActivatedRoute,Params} from '@angular/router'; import {OnInit,OnDestroy,Component} from '@angular/core'; @Component({...}) export class MyComponent implements OnInit,OnDestroy { constructor(private activatedRoute: ActivatedRoute) {} ngOnInit() { // subscribe to router event this.activatedRoute.params.subscribe((params: Params) => { let userId = params['userId']; console.log(userId); }); } }
如果要获取查询参数,请将this.activatedRoute.params替换为this.activatedRoute.queryParams
关于解除注册的注意事项
@Reto和@ codef0rmer已经正确地指出,根据官方文档,在这个实例中,组件onDestroy()方法中的unsubscribe()不是必需的。这已从我的代码示例中删除。 (请参阅我需要取消订阅吗?this教程的一节)