angular2子路线,没有组件

时间:2016-11-03 20:11:54

标签: angular

我正在尝试为我的实体创建一个“编辑”网址。因此,例如/my-site/entity/1/my-site/entity/1/editedit部分仅用于切换主/父实体URL的状态。

在角度1中,使用ui-router我可以按照

的方式做点什么
.state("home.entity.edit", {
    url: "/edit",
    reloadOnSearch: false
})

即。这将是home.entity的子状态。它将没有视图或控制器,因为父状态将处理它。此外,在切换到此状态时,在重定向/控制器执行方面实际上不会发生任何事情。

实际上是否可以使用angular2?

中的组件路由器执行此操作

2 个答案:

答案 0 :(得分:1)

是的,这可以使用路由器参数。 编辑参数为optional parameter。在你的ngOnInit中,你将从请求中读取参数,并采取相应的行动。 它的自动化程度略低于您的示例,但它也提供了更多的自由。

答案 1 :(得分:0)

目前,我已按照以下方式实施

{
    path: 'view/:id',
    component: NotesViewComponent,
    children: [
        {
            path: '',
            component: null
        },
        {
            path: 'edit',
            canActivate: [EditModeActivator],
            component: null
        }
    ],
    data: {
        editMode: false
    }
}

其中

@Injectable()
class EditModeActivator implements CanActivate {
    constructor() { }

    canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
        if (next.url[0].path === "edit") {
            let data: any = next.parent.data;
            data.editMode = true;
        }

        return true
    } 
}

这是一个黑客是的,但现在会做!