我有一个角度应用animals
,根据当前路线位置显示动物图片。例如,/dog
将显示狗图片,/cat
将在页面上显示猫图片。
为了实现这一目标,我创建了3个功能模块 - AnimalBoxModule
,CatModule
和DogModule
。 AnimalBoxModule
有一个组件AnimalBoxComponent
和一个服务AnimalService
。 AnimalBoxComponent
使用AnimalService.getPicture()
来获取动物的图像。 DogModule
和CatModule
有DogService
和CatService
,可用于提供AnimalService
的自定义实施,分别显示猫狗图片。
我正在<animal-box></animal-box>
中呈现AppComponent
。为了显示动物的正确图片,我必须根据当前路线位置提供服务实施(CatService
或DogService
)。 Angular怎么可能?
先谢谢
修改
我不想在使用该服务的AnimalBoxComponent
中进行任何更改,因为我将其作为可重用的组件呈现。国际海事组织,每当我们想要扩展这个应用程序以获得更多的动物服务时,改变它就不是一个好主意。
答案 0 :(得分:0)
好吧,看起来你可以使用Angular Injector这样做,有一个帖子here可以回答你的问题。
import { Injector } from '@angular/core'
...
constructor(private injector: Injector){
if(true) {
this.oneService = <OneService>this.injector.get(OneService);
} else {
this.twoService = <TwoService>this.injector.get(TwoService);
}
}
我会阅读帖子,因为它有更多关于原因的信息。