首页 > 解决方案 > 创建一个具有 RouterModule 作为依赖项的角度包

问题描述

我正在尝试使用 Angular 库启动器创建一个包

在我添加 RouterModule 之前一切正常。

导致问题的模块

import { NgModule, ModuleWithProviders } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ClientMenuComponent } from './client-menu/client-menu.component';
import { ClientMenuItemComponent } from './client-menu-item/client-menu-item.component';
import { RouterModule, Router, Routes } from '@angular/router';


@NgModule({
  imports: [
    CommonModule,
    RouterModule.forRoot([]) <---- Error: AoT compilation failed 
  ],
  declarations: [
    ClientMenuComponent,
    ClientMenuItemComponent,
  ],
  exports: [
    ClientMenuComponent,
    ClientMenuItemComponent
  ]
})
export class ClientMenuModule {
    static forRoot(): ModuleWithProviders {
        return {
            ngModule: ClientMenuModule,
            providers: []
        };
    }
    static forChild(): ModuleWithProviders  {
        return {
            ngModule: ClientMenuModule,
            providers: []
        };
    }
}

这是我得到的完整错误。

Error during template compile of 'ClientMenuModule'
Function calls are not supported in decorators but 'RouterModule' was called.

Error: AoT compilation failed

我正在使用的环境是

Angular CLI: 6.0.3
Node: 8.11.1
OS: darwin x64
Angular: 6.0.0

标签: javascriptangular

解决方案


拉出函数调用:

export const MyModule = RouterModule.forRoot([]);


@NgModule({
  imports: [
    CommonModule,
    MyModule   
  ],
  declarations: [
    ClientMenuComponent,
    ClientMenuItemComponent,
  ],
  exports: [
    ClientMenuComponent,
    ClientMenuItemComponent
  ]
})

推荐阅读