Angular 2 router.navigate

时间:2016-06-30 19:01:45

标签: javascript angular angular2-routing

我正在尝试使用路径和查询参数的混合导航到Angular 2中的路线。

以下是路径是路径最后一部分的示例路线:

#!/bin/sh
sudo rails runner "Model.print_something"

试图像这样使用数组进行链接:

{ path: ':foo/:bar/:baz/page', component: AComponent }

我没有收到任何错误,而且根据我的理解,这应该有效。

Angular 2文档(目前)以下为例:

this.router.navigate(['foo-content', 'bar-contents', 'baz-content', 'page'], this.params.queryParams)

谁能看到我哪里出错了?我在路由器3上。

3 个答案:

答案 0 :(得分:79)

如果第一段不以/开头,则它是相对路线。 router.navigate需要相对导航的relativeTo参数

要么让路线成为绝对路线:

this.router.navigate(['/foo-content', 'bar-contents', 'baz-content', 'page'], this.params.queryParams)

或者您通过了relativeTo

this.router.navigate(['../foo-content', 'bar-contents', 'baz-content', 'page'], {queryParams: this.params.queryParams, relativeTo: this.currentActivatedRoute})

另见

答案 1 :(得分:10)

import { ActivatedRoute } from '@angular/router';

export class ClassName {
  
  private router = ActivatedRoute;

    constructor(r: ActivatedRoute) {
        this.router =r;
    }

onSuccess() {
     this.router.navigate(['/user_invitation'],
         {queryParams: {email: loginEmail, code: userCode}});
}

}


Get this values:
---------------

ngOnInit() {
    this.route
        .queryParams
        .subscribe(params => {
            let code = params['code'];
            let userEmail = params['email'];
        });
}

参考:https://angular.io/docs/ts/latest/api/router/index/NavigationExtras-interface.html

答案 2 :(得分:0)

更简单

从'@angular/router'导入{路由器};

构造函数(私有路由器:路由器){}

return(){this.router.navigate(['/','input']);}

在这里您将重定向到路由输入。 如果您希望相对于某个路径转到特定路径。

return(){this.router.navigate(['/relative','input']);}

这里的 return() 是我们将在按钮点击时触发的方法