@historydev
Острая аллергия на анимешников

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

Пытаюсь инжектить 1 сервис двумя инстансами, один для камеры, второй для демонстрации экрана, в доках только такой пример нашёл, но он не работает или я что-то сделал не так:

@Component({
	selector: 'app-video-call',
	templateUrl: './video-call.component.html',
	styleUrls: ['./video-call.component.scss'],
	providers: [
		MediaDevicesService,
		MediaRecorderService,
		{ provide: 'userP2pService', useValue: P2pService },
		{ provide: 'displayP2pService', useValue: P2pService },
	]
})
constructor(
		public media_devices: MediaDevicesService,
		@Inject('userP2pService') public user_media_p2p: P2pService,
		@Inject('displayP2pService') public display_media_p2p: P2pService,
	)


Нужно чтобы 2 этих инстанса работали как отдельные сущности, чтобы я мог использовать два p2p канала, как я могу это реализовать?
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
@historydev Автор вопроса
Острая аллергия на анимешников
Использовать useClass вместо useValue и здесь ModuleInjector, а не ElementInjector
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
А почему бы не сделать так, зачем эти токены строкой?
class ScreenMediaDevicesService extends MediaDevicesService {}
class CameraMediaDevicesService extends MediaDevicesService {}

providers: [ScreenMediaDevicesService, CameraMediaDevicesService ]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы