在AppModule中订阅管道/指令而不会丢失延迟

时间:2016-09-02 11:00:49

标签: angular angular2-directives

我刚刚将我的应用程序更新为RC6,我注意到他们已弃用@ Componenet.pipes和@ Component.directives。

他们建议在模块类中导入它们:

@NgModule({
  imports: [ BrowserModule ],
  declarations: [
    AppComponent,
    HighlightDirective
  ],
  bootstrap: [ AppComponent ]
})

我遵循了Angular Style Guide中建议的项目结构,所以我有一些懒文件夹(例如+ SubscriptionPage /)

问题是在我的“+ SubscriptionPage /”文件夹中,我有一些管道/指令,我只在应用程序的那一部分使用。 因此,如果我将那些管道/指令放在RootModule中,它们会以一种急切的方式加载,而不是以懒惰的方式加载。

在不丢失惰性的情况下,使用“特定部分”管道/指令的正确方法是什么。

非常感谢

1 个答案:

答案 0 :(得分:1)

您应该为此创建一个惰性模块: (取自here

  

NgModules支持通过路由器延迟加载应用程序的简单方法。一个简单的例子说明了这一点:

import {RouterModule} from ‘@angular/router’
import {NgModule} from ‘@angular/core’
@NgModule({
  declarations: [ MyComponent, MyHomeRoute ],
  bootstrap: [ MyComponent ],
  imports: [
    RouterModule.forRoot([
      { path: ‘home’, component: MyHomeRoute },
      { path: ‘lazy’, loadChildren: ‘./my-lazy-module’ }
    ])
})
class MyAppModule {}
  

您只需在路线上定义loadChildren属性,然后定义Angular   将在该位置获取模块并加载定义的路由   在它进入路由器配置。

import {RouterModule} from ‘@angular/router’
import {NgModule} from ‘@angular/core’

@NgModule({
  declarations: [ MyLazyHome, MyLazyChild ],
  imports: [
    RouterModule.forChild([
      { path: ‘’, component: MyLazyHome },
      { path: ‘a’, component: MyLazyChild }
    ])
  ]
})
class MyLazyModule {}