Angular2。如何防止路线变化

时间:2016-03-27 14:06:27

标签: angular angular2-routing

我有一个角度为2的子组件,它在一定级别之后处理所有路由,路由在父组件中定义为

@RouteConfig([
    { path: '/*other', name: 'Detail', component: DetailsViewComponent, useAsDefault: true },
])

现在,在详情视图中,我想确保输入的网址有效,如果不能阻止更改。

使用routerCanDeactivate不起作用,因为只有在因路由更改而删除组件时才会调用此方法,但在此实现中并非如此。

不幸的是,在查看enter image description here时,大多数API仍然缺少文档。

1 个答案:

答案 0 :(得分:2)

1

您可以在您的子路由上使用@CanActivate,路由器将调用该路由来决定路由激活,从而改变路由。

<强>用法:

import {checkValidUrl} from 'path/to/isUrlValid-service';

@Component({selector: 'control-panel-cmp', template: `<div>Settings: ...</div>`})

@CanActivate(){ //do your checking here and return true/false

    return checkValidUrl.isValid(document.url); 

    // isValid is your function to check the validity
}

class ChildComponent {
}

但是你必须对每个孩子都这样做。

2

如果您想要一次性解决方案,可以创建自己的<custom-router-outlet>

as Described and Implemented here