javascript - 将多个服务插入服务 - angular2

标签 javascript typescript angular angular2-services

我正在尝试将自己创建的服务和 angular2 Http 服务注入(inject)到我的自定义 HttpRest 服务中。

使用

@Inject(Http) public _http: Http

工作正常,但是当我尝试注入(inject)另一个自制服务时出现以下错误:

EXCEPTION: Cannot resolve all parameters for 'HttpRest'(Http @Inject(Http), undefined @Inject(undefined)). Make sure that all the parameters are decorated with Inject or have valid type annotations and that 'HttpRest' is decorated with Injectable.

出于某种原因 UserIds 未定义,即使导入成功。 我的定制服务:

@Injectable()
export class UserIds{
   private _signature_id:string;
   private _role_id:number;
   get signature_id():string{
      return this._signature_id;
   }
   set signature_id(id:string){
      this._signature_id = id;
   }
   get role_id():number{
      return this._role_id;
   }
   set role_id(id:number){
      this._role_id = id;
   }
} 

自定义 HttpRest 服务即时注入(inject) Http 和 UserIds 到:

@Injectable()
export class HttpRest{
    groups;
    constructor(
        @Inject(Http) public _http: Http,
        @Inject(UserIds) public _ids: UserIds
    ){}
...
}

注意!当我删除

,
@Inject(UserIds) public _ids: UserIds

我没有得到错误。
我错过了什么?

更新 问题实际上是由于我试图理解的某种未知原因,UserIds 在构造函数参数中未定义,因此这个问题的标题变得无关紧要。它应该是“导入的服务在构造函数参数中未定义”。
请引用我在这篇文章后面对这个问题的回答。

更新:
请引用讨论此问题的问题。 Using index.ts file to export class causes undefined in injected constructor

最佳答案

@Inject(...) in @Inject(Http) public _http: Http 当参数为@Inject()时是多余的> 与参数的类型相同。

@Injectable()
export class HttpRest{
    groups;
    constructor(public _http: Http, public _ids: UserIds
    ){}
...
}

您需要提供 HttpUserIds 以便 DI 能够解决依赖关系。 Http 包含在 HTTP_PROVIDERS

@Component({
  selector: '...',
  providers: [HTTP_PROVIDERS, UserIds],
  template: ...
})
export class AppComponent {

}

确保您已正确导入所有内容

import {HTTP_PROVIDERS, Http} from 'angular2/http';

关于javascript - 将多个服务插入服务 - angular2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37048080/

相关文章:

javascript - 如何调整跨域url中iframe的大小

reactjs - React 和 Typescript 接口(interface) "OR"运算符

javascript - 在输入 mat-form-fields 上设置 Angular Material 的宽度

javascript - react | TypeScript - "this"onClick 事件的上下文

angular - 使用 Iframe 多次发生 onLoad

node.js - Npm 安装错误,对 http ://registry. npmjs.org/concurrently 的请求出现愚蠢的 fetchpackagemetadata 错误,原因:套接字挂起

javascript - 基于 Visibility JS Fade In 的 If 语句

javascript - react 。呈现和更新 1500 个 <li> 元素的简单列表时非常慢。我认为 VirtualDOM 很快

javascript - 获取传单绘制中多边形中的所有标记

typescript - Nest 无法解析 (?) 的依赖项。请确保索引 [0] 处的参数 PatientProfileRepository