无法解析服务提供商的所有参数?

时间:2020-03-03 11:12:47

标签: angular angular6 angular8

在每个组件中都有一个我用作提供者的服务:

export class LayersSemanticService {
    constructor(
    private nMapLibrary: MapLibraryService,
    private linkService: LinkService
  ) {
  }
}

用作实例:

@Component({
  selector: "app-intersection-layer-component",
  templateUrl: "./intersection-layer-component.component.html",
  styleUrls: ["./intersection-layer-component.component.scss"],
  providers: [LayersSemanticService]
})

问题是我得到了这个错误:

compiler.js:2175 Uncaught Error: Can't resolve all parameters for LayersSemanticService: (?, ?).

可以通过将服务用作根服务来解决,但是我需要单独的服务实例。

2 个答案:

答案 0 :(得分:1)

即使您在组件LayersSemanticService中声明了providers,您仍然需要将该服务标记为@Injectable()

@Injectable()
export class LayersSemanticService {
    constructor(
    private nMapLibrary: MapLibraryService,
    private linkService: LinkService
  ) {
  }
}

the docs中,@Injectable是:

装饰器,将一个类标记为可提供并作为依赖项注入。

演示:https://stackblitz.com/edit/angular-aaxmvr

答案 1 :(得分:0)

@Injectable()
export class XyzService{
    constructor(

  ) {
  }
}

在服务顶部使用Injectable。