0

我必须在组件“org-agents-component”中注入服务“org-agents-service”。依赖关系解析程序无法解析任何参数给需要API服务的org-agents-service。传递给构造函数的Angular2服务的依赖性未定义,尽管将相同的依赖关系传递给其他服务

这里是组件/服务的层次结构(排除不相关的服务/组件) 实质上,每个使外部调用的服务都使用api-service,它是http模块的包装。

搜索组件和服务具有含但是注入的依赖,该组织代理服务收益这个描述性错误没有问题:browser_adapter.js:84EXCEPTION: Can't resolve all parameters for OrgAgentsService: (?).

/app-component 
    /dashboard-component 
     /agent-search-component 
      *search-service 
       *api-service 
     /task-search-component 
      *search-service 
       *api-service 
     /search-view-component 
      *search-service 
       *api-service 
     /org-agents-component 
      *org-agents-service 
       *api-service 

使用的WebPack与Angular2 RC 4(打字稿)。这是服务代码。它相当简单。它取决于Api服务,它也被注入(成功)到其他几个服务中。

import {Injectable} from '@angular/core' 
import {ApiService} from '../common/services/api.service' 
import {Agent} from '../models/agent.model' 

Injectable(); 
export class OrgAgentsService { 
    constructor(private apiService: ApiService) { 

    } 
    public orgId: number; 
    public agents: Agent[]; 

    public retrieveAgentsList(orgId) { 
     let url: string = `https://blahblahblah.blah.blah/endpoint/${orgId}/agents`; 

     return this.apiService.get(url).map((data, err) => { 
      if(!err) { 
       for(let agentResult of data.body) { 
        let agentModel = this.extractAgentSearchResult(agentResult); 
        this.agents.push(agentModel) 
       } 
       return this.getAgents(); 
      } 
      console.log(`[ERROR: OrgAgentService] could not retrieve agents for org ${this.orgId}`); 
      return null 
     }) 
    } 

    public getAgents(): Agent[] { 
     return this.agents 
    } 

    private extractAgentSearchResult(item: any): Agent { 
     console.log(" agent data: " + JSON.stringify(item)); 
     let id = item["id"]; 
     let name = item["name"]; 
     let email = item["email"]; 
     let foreign_id = item["foreign_id"]; 
     let org_id = item["org_id"]; 
     let roles = ""; 
     for (var i = 0, n = item["roles"].length; i < n; i++) { 
      roles = roles + item["roles"][i] + " "; 
     } 
     return new Agent(id, name, email, foreign_id, org_id, roles) 
    } 
} 

这里是需要的服务组件的代码:

import {Component, OnInit, OnChanges} from '@angular/core' 
import {OrgAgentsService} from "../../services/org-agents.service"; 
import {Agent} from '../../models/agent.model' 
import {AgentDetailComponent} from '../agent-detail/agent-detail.component' 
import {ApiService} from "../../common/services/api.service"; 

@Component({ 
    selector: 'org-agents-list', 
    providers: [OrgAgentsService, ApiService], 
    directives: [AgentDetailComponent], 
    template: require('./org-agents.template.html') 
}) 
export class OrgAgentsComponent implements OnInit, OnChanges { 
    constructor(private orgAgentsSvc: OrgAgentsService) { 

    } 
    private agents: Agent[]; 
    public agentId: number; 
    private orgId: number; 

    ngOnInit() { 
     this.getAgents() 
    } 

    ngOnChanges() { 
     this.getAgents(); 
    } 

    getAgents() { 
     this.orgAgentsSvc.retrieveAgentsList(this.orgId).subscribe(agents=>{ 
      this.agents = agents; 
     }); 
    } 
    onSelect(agent: Agent){ 
     this.agentId = agent.id; 
     let elem = <HTMLElement>document.querySelector('#agentDetailsModalOrgList '); 
     elem.style.display="block"; 
    } 

    private onAgentDetailsClose($event){ 
     let elem = <HTMLElement>document.querySelector('#agentDetailsModalOrgList '); 
     elem.style.display="none"; 
    } 
} 
+1

我有这个bug我一段时间...对我来说,这是一个语法错误。我注意到你的OrgAgentsService中有Injectable()而不是@Injectable()。这是一个剪切和粘贴错误还是在原始代码?你也有一个;在它结束时它不应该在那里。 –

+0

@StevenLuke holy f *&k。这是分号和@。谢谢。你可以回答作为答案,所以你可以得到这个愚蠢的错误的信誉。 –

回答

1

我有这个错误我一会儿......对我来说,它到底是一个语法错误。我注意到你的OrgAgentsService中有Injectable()而不是@Injectable()。这是一个剪切和粘贴错误还是在原始代码?你也有一个;在它结束时它不应该在那里。

相关问题