Angular 2延迟加载时没有RouterOutletMap的提供程序 [英] Angular 2 No provider for RouterOutletMap when lazy loading
问题描述
我正在使用最新的Angular CLI构建(16),并且尝试延迟加载路由,但是由于某些原因而失败,因此无法找到任何新的问题或解决方案.
I'm using the latest Angular CLI build (16) and I'm trying to lazy load routes but it fails for some reason, I can't find any new questions or solutions for this.
文件夹结构:
core.component.html:
core.component.html:
<router-outlet></router-outlet>
core.component.ts:
core.component.ts:
import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {RouterModule} from '@angular/router';
// Modules
import {AdminAreaModule} from './+admin-area';
// Services
import {GlobalsService, RegexService, UtilsService} from './shared';
// Main app component
import {CoreComponent} from './core.component';
@NgModule({
imports: [
BrowserModule,
// Feature modules
AdminAreaModule
],
exports: [
BrowserModule
],
declarations: [
CoreComponent
],
providers: [
GlobalsService,
RegexService,
UtilsService
],
bootstrap: [CoreComponent]
})
export class CoreModule {}
admin-area-router.module.ts:
admin-area-router.module.ts:
import {NgModule} from '@angular/core';
import {RouterModule} from '@angular/router';
// Global modules
import {ComponentsModule, SharedModule} from '../../shared';
// Lazy loaded modules
import {AdminAreaModule} from '../admin-area.module';
@NgModule({
imports: [
RouterModule.forChild([
{
path: 'admin',
loadChildren: 'app/+admin-area/admin-area.module#AdminAreaModule'
}
])
],
exports: [
RouterModule
]
})
export class AdminAreaRouterModule {}
admin-area.module.ts:
admin-area.module.ts:
import {NgModule} from '@angular/core';
import {AdminAreaRouterModule} from './router';
import {ComponentsModule, SharedModule} from '../shared';
@NgModule({
imports: [
ComponentsModule,
SharedModule,
// Feature modules
AdminAreaRouterModule
],
exports: [
ComponentsModule,
SharedModule,
AdminAreaRouterModule
]
})
export class AdminAreaModule {}
这会引发错误:
Error in ./CoreComponent class CoreComponent - inline template:0:0 caused by: No provider for RouterOutletMap!
当core.component.ts
文件中明显包含router-outlet
时,为什么会出现此错误?
Why am I getting this error when I clearly have a router-outlet
in my core.component.ts
file?
推荐答案
您没有在核心模块中定义路由,但是您有路由器出口.
You don't have routing defined in the core module, but you do have a router-outlet.
因此,routeroutletmap(路由器出口)的错误没有提供程序(也没有提供路由)
Hence the error no provider (aka no routing is provided) for routeroutletmap (router-outlet)
即使子模块中有路由(在本例中为admin模块),也需要向核心模块添加路由.例如,{ path: '', redirectTo: '/admin', pathMatch: 'full' }
Even if you have routing in your submodule (in this case, the admin module), you also need to add routing to the core module. For example, { path: '', redirectTo: '/admin', pathMatch: 'full' }
这篇关于Angular 2延迟加载时没有RouterOutletMap的提供程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!