我正在尝试使用我的angular-cli项目创建一个简单的组件,该项目从URL
加载参数@Component({
templateUrl: './confirm-registration.component.html',
})
export class ConfirmRegistrationComponent implements OnInit {
constructor(private route: ActivatedRoute,
private router: Router) { }
ngOnInit() {
this.route.params.switchMap((params: Params) => {
return console.log('token:', params['registrationToken']);
});
}
}
但我收到了错误:
编译失败。
... / confirm-registration.component.ts(15,33):类型的参数 '(params:Params)=>空隙'不能分配给类型的参数 '(值:参数,索引:数字)=> ObservableInput< {}>&#39 ;.键入' void' 不能分配给' ObservableInput< {}>'。
我在4.0.3版本中使用Angular。我犯错的地方?
答案 0 :(得分:1)
我用这个获取查询参数:
export class ConfirmRegistrationComponent implements OnInit {
private registrationToken: string;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.params.subscribe(
(params) => {
this.registrationToken = params['registrationToken'];
}
)
答案 1 :(得分:1)
正如 dzejdzej 在他的comment中指出的那样,你必须返回一个可观察者。这似乎在过去几个月已经发生了变化(至少它是几个月前我最后一次尝试编写的),而且他们还没有改变文档。
所以在你的情况下你可以简单地返回相同的observable:
ngOnInit() {
this.route.params.switchMap((params: Params) => {
console.log('token:', params['registrationToken']);
return this.route.params;
});
}
答案 2 :(得分:0)
要获取查询参数,我使用angular-2执行此操作。我不确定它是否适用于angular-4
constructor(private route: ActivatedRoute) {
}
ngOnInit() {
let urParam = this.route.snapshot.queryParams['urParam'];
}

希望这有帮助