Angular 2:根据路线提供服务实施

时间:2017-10-09 11:18:15

标签: angular angular-routing angular-services

我有一个角度应用animals,根据当前路线位置显示动物图片。例如,/dog将显示狗图片,/cat将在页面上显示猫图片。

为了实现这一目标,我创建了3个功能模块 - AnimalBoxModuleCatModuleDogModuleAnimalBoxModule有一个组件AnimalBoxComponent和一个服务AnimalServiceAnimalBoxComponent使用AnimalService.getPicture()来获取动物的图像。 DogModuleCatModuleDogServiceCatService,可用于提供AnimalService的自定义实施,分别显示猫狗图片。

我正在<animal-box></animal-box>中呈现AppComponent。为了显示动物的正确图片,我必须根据当前路线位置提供服务实施(CatServiceDogService)。 Angular怎么可能?

先谢谢

修改

我不想在使用该服务的AnimalBoxComponent中进行任何更改,因为我将其作为可重用的组件呈现。国际海事组织,每当我们想要扩展这个应用程序以获得更多的动物服务时,改变它就不是一个好主意。

1 个答案:

答案 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);
  }
}

我会阅读帖子,因为它有更多关于原因的信息。