вложенные компоненты в angular2

Я собираюсь обновить свои знания об angular2 с версии Rc5 до 2.2. У меня проблема со свойством директивы, которое устарело с тех пор, как я обновил свои пакеты. Я знаю, что оно перемещается в свойство imports в декораторе NgModule, но оно называется Общие компоненты, но когда у меня очень большое количество компонентов, которые я должен переместить из директив для каждого компонента в начальную точку моего приложения в NgModule, и поэтому все мои компоненты должны загружаться при запуске, я не знаю, есть ли способ вернуть директивы в компоненты для ленивой загрузки компонентов внутри других компонентов.


person Mohammad Reza Farahani    schedule 07.12.2016    source источник
comment
stackoverflow.com /вопросы/40293240/   -  person Günter Zöchbauer    schedule 07.12.2016
comment
это не мой вопрос, я хочу загрузить компонент внутри компонентов, а не модуля. мой вопрос таков => stackoverflow.com/questions/40589177/, но я не хочу загружать все свои компоненты в начальной точке при импорте NgModules   -  person Mohammad Reza Farahani    schedule 07.12.2016
comment
Я почти уверен, что это все еще ответ на ваш вопрос. Компоненты загружаются модулями. Ленивая загрузка выполняется на уровне модуля. Так выглядит новый мир.   -  person Günter Zöchbauer    schedule 07.12.2016
comment
так что вы собираетесь сказать мне разделить мои компоненты на ngModules и загрузить их с помощью загрузчика   -  person Mohammad Reza Farahani    schedule 07.12.2016
comment
Точно . . . . .... . . .   -  person Günter Zöchbauer    schedule 07.12.2016
comment
очень приятно, спасибо, но директивы лучше лениво загружать каждый частный компонент, который был связан только с одним компонентом   -  person Mohammad Reza Farahani    schedule 07.12.2016
comment
Было много проблем с ленивой загрузкой. Это было то, к чему они пришли после довольно большого количества различных попыток на этапе бета-тестирования.   -  person Günter Zöchbauer    schedule 07.12.2016
comment
Давайте продолжим обсуждение в чате.   -  person Mohammad Reza Farahani    schedule 07.12.2016


Ответы (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

person Mohammad Reza Farahani    schedule 11.12.2016