繁体   English   中英

角2路由url问题

[英]angular 2 routing url issue

这是我的app.module.ts文件。

 imports: [
        UniversalModule, // Must be first import. This automatically imports BrowserModule, HttpModule, and JsonpModule too.
        RouterModule.forRoot([
            { path: '', redirectTo: 'home', pathMatch: 'full' },
            { path: 'subscriber', component: SubscriberComponent },
            { path: '**', redirectTo: 'home' }
        ]),
        //HttpModule
        FormsModule
    ]

在我的订户组件中,我从ngOnInit中的url获取参数

ngOnInit() {

    let id = '';
    this.activatedRoute.params.subscribe((params: Params) => {
        id = params['id'];
        if (id != '') {
            this.viewData(id);
        }
        console.log(id);
    });
} 

这工作正常,但每次我使用URL获取参数(xxx)时,例如http:// localhost:60009 / xxx,我都会收到错误消息,因为路由重定向到该URL,显然我没有任何链接。 任何想法如何跳过路由重定向?

如果使用路由参数,则需要在路由配置中指定它们。 您正在尝试读取参数id ,但未在配置的路由中指定id 尝试将其添加到您的配置中:

{ path: ':id', redirectTo: 'home', pathMatch: 'full' },

编辑

Angular同时具有路由器参数和查询参数。 路由参数在路由配置中指定,如下所示:

{ path: ':id', redirectTo: 'home', pathMatch: 'full' },

您可以通过以下方式访问组件中的那些:

this.route.params.subscribe(data => data['id']);

然后,您还有查询参数。 这些未在路由配置中指定。 它们在url中看起来像这样: ?id=something并且您可以使用以下命令在您的组件中访问它们:

this.route.queryParams.subscribe(queryParams =>  queryParams['id']);

主要区别在于您在激活的路由上使用params还是queryParams ,以及是否在路由配置中指定了params。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM