Angular2-“路由器出口”不是已知元素


79

我创建了具有较深子路径的路径。我添加<router-outlet>了包裹在NgModule中的AdminComponent组件。但是刷新页面后出现此错误:

'router-outlet' is not a known element

可能是因为我忘记将某些模块导入admin.module.ts

请帮忙。谢谢。

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 {

}

我只是想念一个;
Mehraj Malik,

Answers:


87

AdminComponent是其中的一部分,AdminComponentModule您尚未导入模块RouterModule内部 AdminComponentModule

//  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 {

}

您好@yankee,我正在使用惰性模块功能,并且我将app.routing.module.ts文件分开了。如果我从'./app-routing.module'中包含'import {AppRoutingModule};然后导入app.module.ts,然后再次遇到stackoverflow.com/questions/49670232/…问题。可能的话,请您提供帮助'
Swapnil Yeole '20

46

您没有导出RouterModule。

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

1
是的先生。感谢你!
Jonca33 '18

7

添加此代码

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

给你 app.module.ts

为我工作。


先生,我很高兴:)
pulkit219

谢谢,这对我有所帮助。...通常问你们是从网站上阅读所有文档,还是只是凭经验知道事情????
Gvs Akhil '18年

@Akhil不,我只是像你一样抬头,有些评论帮助了我。仅仅阅读文档对我来说从来都不是一件容易的事!
pulkit219 '18

4

在您的app.module.ts文件中

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

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

0

这对我有用:

[NO_ERRORS_SCHEMA]在AppModule中添加架构。

import { NO_ERRORS_SCHEMA } from '@angular/core';

@NgModule({
  schemas : [NO_ERRORS_SCHEMA]  
})

0

app.module.ts

import { MyRoutingModule } from './MyRoutingModulePath';

  @NgModule({
  imports: [
    MyRoutingModule
  ])

尽管这可以回答作者的问题,但缺少一些解释性的文字和文档链接。没有一些短语,原始代码片段不是很有帮助。您可能还会发现如何写一个好的答案很有帮助。请修改您的答案。
hellow

我的最新答案没有任何原创性。我努力实现通过互联网找到的解决方案。由于我的体系结构的特殊性,堆肥,混乱和耗时。我一直在寻找一个简短的答案,以指出解决方案,而不是教我过程。在我最终处理完它之后,对我来说显而易见的是,很难看到完整示例。当然,有很多失败的方法。但是许多人会和我一样失败。这个答案是针对那些已经很接近解决它,但离正确性还很远的人的。
profimedica
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.