Я создаю приложение с Angular (6.0.7
) и пытаюсь создать сервис с новым:
@Injectable({
providedIn: 'root'
})
Но как мне ввести инъекцию с помощью интерфейса?
Проблема
У меня есть 2 службы, Authentication.service и SessionStorage.service . Я хочу добавить сессионное хранилище в сервис аутентификации. Это можно сделать через:
constructor(private sessionStorage: SessionStorage) {
}
Нет проблем. Но для объектно-ориентированных целей я хочу иметь interface
над этим сервисом (чтобы я мог реализовать оба сервиса localalstorage как сервис sessionstorage). Таким образом, вполне логично, что я хочу ввести введенный класс с интерфейсом, но это не может быть сделано таким же образом, как Angular 5 и ниже делает это .
Так, как я могу ввести инъекцию в этот глобальный сервис с моим интерфейсом?
Я пробовал
Типы сервисов Angular описывают InjectableProvider
, но это не соответствует ни одному из параметров родственных элементов InjectableProvider
, поэтому это приводит к ошибке компилятора (и tslint).
@Injectable({
providedIn: 'root'
}, {provide: IStorageService, useClass: SessionStorage})