将参数添加到Angular router.navigate

时间:2017-06-29 09:28:59

标签: angular typescript binding router

首先,我不确定这是否是正确的方法,以实现我想要的...... 我试图将如下所示的导出绑定添加到router.navigate() - 方法:

<call [caller]="caller"></call>

问题是我从不使用该指令,而是通过路由器对其进行处理:

acceptCall() {
   this.router.navigate(["call"]);
}

如何从acceptCall()方法中的第一个示例实现相同的导出绑定? 我已经添加了一个Input()变量并尝试使用queryParams,如下所示:

@Input() caller: Caller;
acceptCall(caller) {
    this.router.navigate(["call"], {queryParams: caller});
}

但这不起作用。

1 个答案:

答案 0 :(得分:9)

根据我的意见,您必须:

1 - 重新定义您的路线

{path: 'call/:caller', component: MyComponent }

2 - 更改父组件 中的导航

this.router.navigate(["call", caller]);

3 - 在子组件中,获取参数

import { ActivatedRoute } from '@angular/router';
// code until ...
myParam: string;
constructor(private route: ActivatedRoute) {}
// code until ...
ngOnInit() {
    this.route.params.subscribe((params: Params) => this.myParam = params['caller']);
}