Angular 2 延迟加载时没有提供 RouterOutletMap [英] Angular 2 No provider for RouterOutletMap when lazy loading

查看:18
本文介绍了Angular 2 延迟加载时没有提供 RouterOutletMap的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用最新的 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.

因此错误 no provider (aka no routing is provided) for routeroutletmap (router-outlet)

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆