У меня есть класс обслуживания и специализированные классы обслуживания и общий компонент, который должен использовать либо специализированную службу, в зависимости от модуля.класс специализации во время инъекции зависимостей
У меня UpdateFormComponent
в SharedModule
- общий для всех остальных модулей в приложении. Во время создания экземпляра я должен передать потомок AbstractSaveService
- Module1SaveService
и Module2SaveService
. Эти услуги объявлены в других модулях Module1
и Module2
.
Так структура файла будет
\shared\shared.module.ts
update.form.component.ts
abstract.service.ts
\module1\save1.service.ts (extends AbstractSaveService)
users.component.ts (use UpdateFormComponent and Module1SaveService)
\module2\save2.service.ts (extends AbstractSaveService)
cameras.component.ts (use UpdateFormComponent and Module2SaveService)
@Component({
selector: 'update-form-component'
})
class UpdateFormComponent {
constructor (private s: AbstractSaveService) {}
}
@Component({
selector: 'users-component',
template: '<update-form-component></update-form-component>' // inject Module1SaveService
})
export class UsersComponent {}
@Component({
selector: 'cameras-component',
template: '<update-form-component></update-form-component>' // inject Module2SaveService
})
export class CamerasComponent {}
Когда я показываю страницу из Module1
(UsersComponent
) и нажмите кнопку пользователя Я хочу, чтобы показать UpdateFormComponent
с вводят Module1SaveService
. Когда я показываю страницу от Module2
(CamerasComponent
) и пользовательскую кнопку нажмите, чтобы показать UpdateFormComponent
с введенным Module2SaveService
. Как я могу это достичь?
Является ли их способ программно Knowning, какой класс вы хотите создать? В зависимости от глобальной переменной другое значение службы .... Являются ли 2 экземпляра, созданные внутри одного и того же компонента хоста? Или в двух разных хостах? – Melou
@Melou Я отредактировал свой вопрос с ответами для вас. – koral
Спасибо. Отвечает ли вам ответ @Gunter Zochbauer? Вот почему я спрашивал, созданы ли 2 экземпляра внутри одного и того же хост-компонента. – Melou