【发布时间】:2017-10-09 11:18:14
【问题描述】:
我有一个角度应用程序animals,它根据当前路线位置显示动物的图片。例如,/dog 将在页面上显示狗图片,/cat 将在页面上显示猫图片。
为了实现它,我创建了 3 个功能模块 - AnimalBoxModule、CatModule 和 DogModule。 AnimalBoxModule 有一个组件 AnimalBoxComponent 和一个服务 AnimalService。 AnimalBoxComponent 使用 AnimalService.getPicture() 获取动物的图像。 DogModule 和CatModule 有DogService 和CatService 可用于提供AnimalService 的自定义实现,分别显示猫和狗的图片。
我在AppComponent 中渲染<animal-box></animal-box>。为了显示正确的动物图片,我必须根据当前路线位置提供服务实现(CatService 或DogService)。在 Angular 中怎么可能?
提前致谢
编辑
我不想对正在使用该服务的AnimalBoxComponent 进行任何更改,因为我将其呈现为可重用组件。 IMO,当我们想要扩展这个应用程序以提供更多动物服务时,更改它不是一个好主意。
【问题讨论】:
-
hmmm... 通常,如果它们使用不同的服务,最好有单独的组件。但我知道你怎么会想要这个。您是否尝试过使用
ActivatedRouteSnapshot? -
@FussinHussin 不,不知道。打算试试。谢谢
-
你可以检查一个字符串是否匹配激活的路由,比如狗或猫,并根据它注入服务。最困难的部分将是弄清楚如何有条件地注入服务。
-
感谢@FussinHussin,有条件地注入服务,我被卡住了。任何指针或提示将不胜感激。
标签: angular angular-routing angular-services