Angular2 — провайдер и начальная загрузка корневого модуля

В корневом модуле (app.module.ts)

@NgModule({
  declarations: [
    AppComponent,
    HomeComponent,
    DirectoryComponent,
    FilterPipe,
    LoggingService
  ],
  imports: [
    FormsModule,
    BrowserModule,
    HttpClientModule,
    routing
  ],
  providers: [],
  bootstrap: [AppComponent]
})

imports:[..] указывают, что корневой модуль импортирует другие модули.

declarations:[..] указывают, что компоненты/сервисы/каналы/.. созданы и принадлежат корневому модулю.


Что означают providers и bootstrap?


person overexchange    schedule 21.11.2017    source источник
comment
Вы получите все здесь: angular.io/docs   -  person Ankit Kapoor    schedule 21.11.2017


Ответы (1)


bootstrap — это просто массив, из которого извлекается корневой компонент. В вашем случае root равен AppComponent, где экземпляр корневого компонента создается и вставляется в тег элемента, указанный селектором компонента. Селектор AppComponent — в вашем случае и в большинстве образцов документации — это app-root, поэтому Angular ищет тег <app-root> в index.html, как показано ниже:

<body>
  <app-root></app-root>
</body>  

Провайдеры обычно представляют собой одноэлементные (один экземпляр) объекты, к которым другие объекты имеют доступ через внедрение зависимостей (DI). Поставщик описывает, что инжектор должен создавать экземпляр данного токена, поэтому он описывает, как создается объект для определенного токена. Если вы планируете использовать объект несколько раз, например, службу Http в разных компонентах, вы можете запросить один и тот же экземпляр этой службы (использовать его повторно). Вы делаете это с помощью DI, предоставляя ссылку на тот же объект, который DI создает для вас.

@Component){
  ..
  providers: [Http]
}
..instead of creating new object every time:

@Component){}
class Cmp {
  constructor() {
    // this is pseudo code, doens't work
    this.http = new Http(...options);
  }
}

Провайдеры — это основная идея внедрения зависимостей. Вот очень хороший пример, касающийся бутстрап и провайдеры.

person Sunil Lama    schedule 21.11.2017
comment
Как насчет нескольких записей в массиве bootstrap? - person overexchange; 21.11.2017
comment
Привет @overexchange, да, мы можем иметь несколько записей в массиве начальной загрузки, если они вам не нужны. обратитесь к загрузке с несколькими входами - person Sunil Lama; 21.11.2017
comment
Что означает загрузка нескольких сущностей (компонент/служба/что угодно/..)? - person overexchange; 21.11.2017
comment
@overexchange, это означает, что вы говорите своему угловому приложению искать компонент, который он есть и может использоваться - person Sunil Lama; 21.11.2017