You can achieve this via dependency injection.
As you said, create two different services implementing same ISearchService
interface.
When using SearchComponent
, provide appropriate service class from module to ServiceComponent
.
Your SearchComponent
would look like
constructor(private searchService: ISearchService) {}
And when using SearchComponent
at different places provide service instance:
providers: [
{ provide: ISearchService, useValue: SearchInMaleEmployeeService}
]
or
providers: [
{ provide: ISearchService, useValue: SearchInFemaleEmployeeService}
]
More information about Angular2 dependency injection here.
Update:
As pointed out by Ben
Provide statement needs to be coded as
provide('ISearchService', {useClass: SearchInMaleEmployeeService})
And to inject the class to component:
constructor(@Inject('ISearchService') private searchService:ISearchService) {}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…