> For the complete documentation index, see [llms.txt](https://koziuk-s.gitbook.io/angular-starter/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://koziuk-s.gitbook.io/angular-starter/angular-module.md).

# Angular Modules

Angular аплікації складаються з окремих модулів. Як правило, вони, складаються з декількох модулів.

Кожна Angular аплікація — має як мінімум один кореневий модуль (root module), який називається **AppModule**.

{% tabs %}
{% tab title="app.module.ts" %}
{% code overflow="wrap" lineNumbers="true" %}

```typescript
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule
  ],
  providers: [],
  bootstrap: [AppComponent],
  exports: [],
  entryComponents: []
})
export class AppModule { }
```

{% endcode %}
{% endtab %}
{% endtabs %}

Розглянемо основні елементи в **AppModule**.

{% tabs %}
{% tab title="app.module.ts" %}
{% code overflow="wrap" lineNumbers="true" %}

```typescript
// BrowserModule: модуль, необхідний для роботи з браузером
import { BrowserModule } from '@angular/platform-browser';

// NgModule: функціонал декоратора NgModule,
// без якого ми не зможемо створити модуль
import { NgModule } from '@angular/core';

// AppComponent: функціонал кореневого компонента
import { AppComponent } from './app.component';

@NgModule({
 // ...
})
export class AppModule { }
```

{% endcode %}
{% endtab %}
{% endtabs %}

#### Властивості NgModule:

| Властивість         | Опис                                                                                                                                               |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| **declarations**    | класи, вюшки (view, class), які належать модулю. Angular має три типи класів вюшок: компоненти (components), директиви (directive), канали (pipes) |
| **imports**         | інші модулі, класи які необхідні для компонентів в поточному модулі                                                                                |
| **providers**       | підключення сервісів (*service*) які потрібні для цього модуля                                                                                     |
| **bootstrap**       | кореневий компонент, який викликається за замовчуванням при завантаженні                                                                           |
| **exports**         | елементи які ми хочемо експортувати з модуля для подальшого їх використанняи в інших модулях                                                       |
| **entryComponents** | для динамічнго додавання компонентів                                                                                                               |
