angular2中的嵌套组件

nested Components in angular2

我打算将我对 angular2 的知识从版本 Rc5 升级到 2.2。 我对指令 属性 有疑问,自从我升级我的 packages.I 后,它就被弃用了,知道它在 NgModule 装饰器上移动到 imports 属性 但它调用了 Shared Components 但是当我有大量组件时,我必须从每个组件上的指令移动到我的应用程序在 NgModule 的起点,因此我的所有组件都必须在开始时加载,我不知道是否有办法将指令带回组件以延迟加载其他组件中的组件。

正如我的朋友所说,在 angular 中嵌套组件已被弃用,取而代之的是模块加载。以下是我如何以我的方式实现它: 首先,我发现我们可以用新路由器延迟加载模块,所以我模块化了我的应用程序的区域并更改了我的主模块

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import {homeComponent} from './appComponent/homeComponent.Component'
import { AppComponent }  from './appComponent/app.component';
import {RouterModule} from '@angular/router'

@NgModule({
  imports:      [ BrowserModule,
    RouterModule.forRoot([
      { path: '', redirectTo: 'home', pathMatch: 'full' },
      { path: 'home', component: homeComponent },
      { path: 'lazy1', loadChildren: './dist/app/detailComponent/detailModule.Module#detailModule' }

    ], {})
  ],
  declarations: [ AppComponent,homeComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

最后一个根路由显示了我们如何分配一个模块而不是导入的组件,然后我们在第二个模块中配置我们的子路由并像这样:

import { NgModule }      from '@angular/core';
import { DetailComponent } from '../detailComponent/detail.component'
import { RouterModule, Route, Router} from '@angular/router';

@NgModule({
  imports:[ RouterModule.forChild([ {path: '', component: DetailComponent}])],
  declarations: [ DetailComponent ]
})
export class detailModule { }

正如这段代码所示,我们可以配置我们的二级模块来加载它的组件,并在一开始使用它来稍微减少网络负载(使用 systemjs),并在用户单击菜单链接时加载它。 注意我们可以在二级模块路由配置中继续嵌套我们的模块

我们还可以使用名为 SystemJsNgModuleLoader

的内置 angular class 加载模块及其组件