用于子路由目的的空组件

时间:2016-02-25 20:54:29

标签: routing angular

我究竟如何创建一条不会自动导航到其路线的子路线?

我有一个导航组件,导航到我的应用程序中的各个模块。我导航到的一个模块,让我们称之为目录,有自己的子路径来显示特定对象的详细信息。我想导航到目录,而不是目录/细节。只有当我点击目录中的特定对象时,我才能导航到目录/详细信息。

因此,在我的导航组件上,我定义了初始路径。

            new Route({ path: "/reporting/catalog/...", 
                        component: ReportCatalogComponent, 
                        name: "Reporting.Catalog" }),

在其模板中,是[routerLink]

<a class="navbar-link" [routerLink]="['Reporting.Catalog', 'Default']">Report Catalog</a>

ReportCatalogComponent内部我定义了子路径

@RouteConfig([
    new Route({ path: "/", component: EmptyComponent, name: "Default", useAsDefault: true }),
    new Route({ path: "details/", component: ReportDetailsComponent, name: "Details" })
])

我不想拥有默认路径......因为它只是为了避免直接导航到详细信息页面。我还没有选择任何细节,所以我不应该在那里导航。

目前Angular2中是否有一种方法可以让我设置该子路径,但不能立即导航到那里?或者即使我必须按照我的方式定义第二个路径,有没有办法不必创建我分配给路径的EmptyComponent?

1 个答案:

答案 0 :(得分:1)

如果你交换组件,我相信你会得到你想要的东西:

new Route({ path: "/reporting/catalog/...", component: EmptyComponent, name: "Reporting.Catalog" }),

@RouteConfig([
    new Route({ path: "/", component: ReportCatalogComponent, name: "Default", useAsDefault: true }),
    new Route({ path: "details/", component: ReportDetailsComponent, name: "Details" })
])

您可能需要将template: "<router-outlet></router-outlet>"添加到EmptyComponent ...