Я хотел бы загрузить соответствующий сервис после конструктора компонента.
Я знаю, что способ использовать сервис в компоненте - вызвать его в конструкторе.Но я хотел бы иметь возможность загружать ту или иную службу в соответствии с данными из моего компонента.Чтобы иметь возможность вызывать соответствующую службу позже.
Примерный пример компонента диалога
_currentSendingService; // a service
constructor(private _alert : AlertService)
{
this.foo();
}
foo() {
if (condition) {
this._currentSendingService = SmsService // not working idea of what i want
}
else {
this._currentSendingService = EmailService
}
}
sendMessage() {
this._currentSendingService.send(message)
}
Способ сделать это - поместить все службы в конструктор исоздать экземпляр вар.
constructor(private _alert : AlertService, private _smsService:SmsService, private _emailService:EmailService)
{
this.foo();
}
И делать это в foo ();
foo() {
if (condition) {
this._currentSendingService = this._smsService
}
else {
this._currentSendingService = this._emailService
}
}
sendMessage() {
this._currentSendingService.send(message)
}
Но если я использую много сервисов, оптимизируется ли так?(представьте, если у меня есть около 20 доступных сервисов, но только один из них используется в зависимости от сценариев) И с этим способом сработает конструктор каждого сервиса, это поведение, которое я могу не хотеть
Пример: мызагрузите компонент, в соответствии с его данными мы хотим использовать SmsService как _currentSendingService, потому что тип сообщения, которое мы имеем в диалоге, только в SMS.Поэтому, когда я использую _currentSendingService.send ("message");Он будет использовать метод SmsService.send ("message").Если вы можете сказать мне, как поступить, я не могу найти это.Все документы, которые я нахожу об услугах, говорят мне зарегистрировать это в конструкторе.Спасибо, что нашли время, чтобы прочитать мою проблему