通过NPM包指定嵌套模块Angular 2的路由

时间:2016-11-07 07:36:15

标签: angular npm routing nested angular2-routing

我一直在尝试构建一个角度2应用程序。 我有这个基本结构。

的AppModule

  • AppComponent
  • App.Routing
  • App.template
  • App.module

我有另一个模块让我们说“SampleModule'作为我在App.module文件中加载和导入的NPM包

我现在的问题是指定应用程序路由中的一个路由指向“SampleModule”中的一个组件。让我们说' SampleComponent'。

我尝试从SampleModule中公开组件,我尝试在App路由中导入。它没有用。它说,找不到名称SampleComponent

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

自' SampleModule'是一个npm包,' SampleModule'可以在node_modules文件夹(项目根路径)下找到。

首先通过向SampleModule

添加以下行来导出SampleComponet
@NgModule({
  declarations: [SampleComponet],
  exports: [SampleComponet] <== this line
})
export class SampleModule{}

然后在App.module中,导入&#39; SampleModule&#39;

import { SampleModule } from '/path_to_node_modules/path_to_sample_module/';

@NgModule({
  imports: [SampleModule],<== this line
})
export class AppModule{}

现在您可以导入&#39; SampleComponent&#39;通过以下导入语句直接进入您的App.Routing

import { SampleComponent } from '/path_to_node_modules/path_to_componet/';

{ path: 'sample', component: SampleComponent }

注意:如果SampleModule有自己的路由,则定义如下

const routes: Routes = [~routings~]

    @NgModule({
      imports: [RouterModule.forChild(routes)],
      declarations: [SampleComponet],
      exports: [SampleComponet] <== this line
    })
    export class SampleModule{}

然后在App路由器中使用以下代码

{
    path: 'sample',
    loadChildren: './path_to_node_modules/path_to_sample_module/sample.module#SampleModule'
}