2016-10-28 61 views
46

我创建了具有深层子路径的路由。我将<router-outlet>添加到我包装到NgModule中的AdminComponent组件。因为我忘了导入某些模块admin.module.tsAngular2 - 'router-outlet'不是已知元素

请帮

'router-outlet' is not a known element 

也许它发生了:但刷新页面后,我得到这个错误。谢谢。

app.routes.ts

export const routes: Routes = [ 
    { 
     path: '', 
     component: AppComponent, 
     children: [ 
      { 
       path: '', 
       component: LoginComponent 
      }, 
      { 
       path: 'admin', 
       component: AdminComponent 
      }, 
      { 
       path: 'user', 
       component: UserComponent 
      }, 
      { 
       path: 'there', 
       component: ThereComponent 
      } 
     ] 
    } 
] 

app.module.ts

@NgModule({ 
    imports: [ 
     BrowserModule, 
     AppRoutes, 
     FormsModule, 
     ReactiveFormsModule, 
     HttpModule, 
     RouterModule, 
     TranslateModule.forRoot({ 
      provide: TranslateLoader, 
      useFactory: (http: Http) => { 
       return new TranslateStaticLoader(http, './src/assets/i18n', '.json') 
      }, 
      deps: [Http] 
     }), 
     UserComponentModule, 
     AdminComponentModule, 
     LoginComponentModule, 
     ThereComponentModule, 
     DashboardComponentModule 
    ], 
    declarations: [ 
     AppComponent 
    ], 
    providers: [ 
     FormBuilder 
    ], 
    bootstrap: [AppComponent] 
}) 

admin.component.tsadmin.module.ts

// admin.component.ts 
import {Component} from "@angular/core"; 

@Component({ 
    selector: 'admin', 
    template: "<router-outlet></router-outlet>", 
}) 

export class AdminComponent { 
    constructor() { 

    } 
} 

// admin.module.ts 
const ADMIN_DECLARATION = [ 
    AdminComponent 
]; 

@NgModule({ 
    imports: [ 
     BrowserModule, 
     TranslateModule, 
     FormsModule, 
     ReactiveFormsModule 
    ], 
    declarations: [ 
     ADMIN_DECLARATION 
    ], 
    exports: [ 
     ADMIN_DECLARATION 
    ], 
    providers: [ 
     TranslateService, 
     FormBuilder 
    ] 
}) 

export class AdminComponentModule { 

} 
+0

我只是缺少一个';' –

回答

56

AdminComponentAdminComponentModule一部分,你有没有进口RouterModuleAdminComponentModule模块:

// admin.component.ts 
import {Component} from "@angular/core"; 

@Component({ 
    selector: 'admin', 
    template: "<router-outlet></router-outlet>", 
}) 

export class AdminComponent { 
    constructor() { 

    } 
} 

// admin.module.ts 
const ADMIN_DECLARATION = [ 
    AdminComponent 
]; 

@NgModule({ 
    imports: [ 
     BrowserModule, 
     TranslateModule, 
     RouterModule, 
     FormsModule, 
     ReactiveFormsModule 
    ], 
    declarations: [ 
     ADMIN_DECLARATION 
    ], 
    exports: [ 
     ADMIN_DECLARATION 
    ], 
    providers: [ 
     TranslateService, 
     FormBuilder 
    ] 
}) 

export class AdminComponentModule { 

} 
1

这个代码

import { provideRoutes} from '@angular/router'; 

添加到您的app.module.ts

为我工作。

+0

该解决方案帮助我解决我的问题,谢谢 –

+0

是我的荣幸,先生:) – ascension1110

20

您没有导出RouterModule。

@NgModule({ 
    imports: [RouterModule.forRoot(routes)], 
    exports: [RouterModule] 
}) 
+0

这可能是在大多数情况下是正确的答案。 – Ketan

1

在你app.module.ts文件

import { routing } from './app-routing.module'; 

//and then write within imports 
@NgModule({ 
    declarations: [ 
    AppComponent, 
    NavbarComponent 
    ], 
    imports: [ 
    BrowserModule, 
    **routing**, 
    EmployeeModule 
    ], 
相关问题