У меня есть сервис, как это:
@Injectable()
export class EditorService { ... }
И у меня есть компонент, как это:
@Component({
...
template: '<child-component></child-component>',
providers: [EditorService],
...
})
export class SomeComponent {
constructor(
private _appleEditorService: EditorService,
private _pearEditorService: EditorService) {}
}
Как вы могли заметить, этот компонент имеет дочерний компонент:
@Component({
...
selector: 'child-component',
...
})
export class ChildComponent {
constructor(
private _appleEditorService: EditorService,
private _pearEditorService: EditorService) {}
}
Как видите, я хочу два экземпляра моего EditorService
: один будет использоваться для редактирования яблок, а другой - для редактирования груш. Однако приведенный выше код не сработает, поскольку Angular не может узнать, какой экземпляр EditorService
какой, а их имена переменных являются частными. _pearEditorService
в ChildComponent
может также ссылаться на тот же экземпляр, что и _appleEditorService
в SomeComponent
.
Вопрос: Как еще я могу использовать один и тот же сервис Angular2 дважды?
РЕДАКТИРОВАТЬ: Суть моего вопроса, если это возможно, используя тот же класс. Я знаю, что есть обходные пути, фактически создавая отдельный класс для каждого экземпляра службы, и даже делая это с небольшим количеством кода по наследству. Я просто хочу знать, можно ли это сделать без.