【问题标题】:Angular 2 RC5 child routing problemsAngular 2 RC5 子路由问题
【发布时间】:2016-12-19 22:57:42
【问题描述】:

我正在尝试让子路由正常工作,这是我得到的错误:

EXCEPTION: Error: Uncaught (in promise): Error: Cannot match any routes: 'settings'

这是我的 app.modules.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { routeComponents, routing, appRoutingProviders } from './app.routes';


@NgModule({
    declarations: [
        AppComponent,
        routeComponents
    ],
    imports: [
        BrowserModule,
        CommonModule,
        FormsModule,
        routing
    ],
    providers: [ appRoutingProviders ],
    entryComponents: [AppComponent],
    bootstrap: [AppComponent]
})
export class AppModule {

}

这是我的 app.routes.ts

import { Routes, RouterModule } from '@angular/router';
import { DashboardComponent } from './dashboard/';
import { settingsRoutes, settingsComponents } from './settings/';

const appRoutes: Routes = [
    { path: '', redirectTo: 'dashboard', pathMatch: 'full'},
    { path: 'dashboard', component: DashboardComponent },
    ...settingsRoutes
];

export const appRoutingProviders: any[] = [

];

export const routeComponents: any[] = [
    DashboardComponent,
    ...settingsComponents
];

export const routing = RouterModule.forRoot(appRoutes, {useHash: true});

这是我的 settings.routes.ts

import { Routes } from '@angular/router';
import { SettingsComponent } from "./settings.component";
import { DashboardSettingsComponent } from "./dashboard-settings/dashboard-settings.component";

export const settingsRoutes: Routes = [
    {
        path: 'settings',
        component: SettingsComponent,
        children: [
            { path: 'dashboard-settings', component: DashboardSettingsComponent }
        ]
    }
];

export const travelSettingsComponents = [
    SettingsComponent,
    DashboardSettingsComponent
];

**如果我从 settings.routes.ts 文件中删除这一行,没有错误,它允许我转到设置路由:

{ path: 'dashboard-settings', component: DashboardSettingsComponent }

【问题讨论】:

    标签: angular routing router


    【解决方案1】:

    如果你有一条带孩子的路线,我相信你需要像这样指定一个默认的孩子路径:

    children: [
        { path: '', component: SettingsComponent },
        { path: 'dashboard-settings', component: DashboardSettingsComponent }
    ]
    

    这将产生以下 URL:/settings/settings/dashboard-settings

    【讨论】:

    • 谢谢。这对我有用,但是当我添加默认子路径时,我必须添加组件的实例。看起来您还需要从顶级路由中删除 component: SettingsComponent 才能解决该问题。
    猜你喜欢
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    相关资源
    最近更新 更多