Я собираюсь обновить свои знания об angular2 с версии Rc5 до 2.2. У меня проблема со свойством директивы, которое устарело с тех пор, как я обновил свои пакеты. Я знаю, что оно перемещается в свойство imports в декораторе NgModule, но оно называется Общие компоненты, но когда у меня очень большое количество компонентов, которые я должен переместить из директив для каждого компонента в начальную точку моего приложения в NgModule, и поэтому все мои компоненты должны загружаться при запуске, я не знаю, есть ли способ вернуть директивы в компоненты для ленивой загрузки компонентов внутри других компонентов.
вложенные компоненты в angular2
Ответы (1)
Как сказал мой друг, вложение компонентов в 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
) и загружать его, когда пользователь щелкает ссылки меню. Обратите внимание, что мы можем продолжать вкладывать наши модули в конфигурацию маршрутизации модулей второго уровня.
Также мы можем загрузить модуль и его компоненты с помощью встроенного класса angular с именем SystemJsNgModuleLoader