Внедрение угловой зависимости, срок службы сервисов - PullRequest
0 голосов
/ 05 мая 2018

Имея некоторые вопросы относительно срока службы Angular. Насколько я понимаю, если вы внедрите сервис в компонент, а сервис будет предоставлен в массиве провайдеров этого компонента, то сервис будет уничтожен при уничтожении компонента.

Вот пример, который будет менее абстрактным:

@Component({
  selector: 'app-offline-header',
  templateUrl: './offline-header.component.html',
  styleUrls: ['./offline-header.component.css'],
  providers: [WebsocketService]
})

export class OfflineHeaderComponent{ 
  constructor(private socket: WebsocketService) {}
}

В приведенном выше примере WebsocketService вводится на уровне этого компонента, а не в app.module (или другом модуле). Так что, если этот компонент уничтожен, экземпляр службы также будет уничтожен?

Вопросы:

  1. Когда этот компонент уничтожается, уничтожается ли также экземпляр WebsocketService?

  2. Если бы мы предоставляли эти услуги в корневом модуле (app.module), то был ли сервис единственным? Если в этом случае услуга является одноэлементной, то когда создается этот одноэлементный файл?

1 Ответ

0 голосов
/ 05 мая 2018

Подробнее об этом можно прочитать здесь

Чтобы ответить на ваши вопросы

1- Да, он уничтожен. Это полностью зависит от жизненного цикла компонента, который предоставляет услугу.

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

2 - Да, он одноразовый и используется в вашем приложении. Я не уверен, когда именно создаются одноэлементные сервисы, но я думаю, что они создаются до компонентов, поэтому, если компоненту нужен сервис, он может получить его в своем конструкторе.

...