无法从路线网址读取参数

时间:2017-05-26 09:19:37

标签: angular angular-routing

我正在尝试使用我的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。我犯错的地方?

3 个答案:

答案 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'];
}




希望这有帮助