Skip to content

Latest commit

 

History

History
86 lines (55 loc) · 4.71 KB

File metadata and controls

86 lines (55 loc) · 4.71 KB

Зачем нужны сервисы?

Сервисы нужны для сокращения дублированного кода. Сервисы также могут обеспечивать связь между компонентами, а также доступ к любой другой бизнес-логике.


Как сервисы внедряются в приложение?

Два способа внедрения сервиса:

  • на уровне приложения
  • на уровне компонента (и всех его дочерних компонентов)

Внедрение сервиса на уровне приложения создает один единственный экземпляр этого сервиса. Это удобно когда нам нужно шарить данные между различными компонентами или модулями.

Внедрение сервиса на уровне компонента, создает новый экземпляр сервиса для каждого компонента в отдельности.

Чтобы начать использовать сервис, его нужно добавить в массив providers модуля, а затем инжектировать его в директиву, использую constructor. Чтобы инжектировать сервис в другой сервис нужно использовать декоратор @Injectable.

@Injectable()
export class MessageService {
	//injected service
	constructor(private errorService: ErrorService) {}
}

Что такое Singleton Service?

Singleton service - это сервис у которого только одни экземпляр на всё приложение.

Какой жизненный цикл у сервиса в Angular?

В Angular жизненный цикл сервиса относится к процессу его создания, использования и уничтожения в приложении. Кратко это выглядит так:

  1. Регистрация: Сервисы регистрируются в системе внедрения зависимостей (DI) Angular с помощью провайдеров в модулях, компонентах или других декораторах (@Injectable).

  2. Создание экземпляра: Когда компонент или другой сервис запрашивает зависимость, DI Angular создает единственный экземпляр сервиса (по умолчанию — singleton), если не указано иначе.

  3. Внедрение: Экземпляр сервиса внедряется в запрашивающий компонент или сервис.

  4. Использование: Сервис предоставляет данные, методы или логику компонентам или другим сервисам.

  5. Уничтожение: Сервисы обычно существуют в течение всего времени работы приложения и уничтожаются только при завершении приложения или связанной области (например, лениво загружаемого модуля).

Ключевые моменты:

Сервисы-одиночки (Singleton) существуют на протяжении всего времени работы приложения.

Сервисы с ограниченной областью (например, в лениво загружаемых модулях) уничтожаются вместе с их областью.


Как зарегистрировать сервис в providers?

Чтобы зарегистрировать сервис в providers, нужно использовать декоратор @Injectable и указать свойство providedIn.

@Injectable({
	providedIn: "root",
})
export class MessageService {
	constructor() {}
}

Как использовать сервис в компоненте?

Чтобы использовать сервис в компоненте, нужно инжектировать его в конструктор компонента.

@Component({
	selector: "app-message",
	template: ` <h1>Message</h1> `,
})
export class MessageComponent {
	constructor(private messageService: MessageService) {}
}