如何在Ionic 2中的另一项服务中使用服务

时间:2016-10-18 12:36:54

标签: cordova angular ionic2

我使用了两个服务1.连接服务和2.销售服务

connection-service包含ip和端口信息。我需要从第一个服务到销售服务获取ip和端口。这样我就可以完成用于获取json的URL。

  

在此处删除了编码部分,请在Update#3

查看我的回购

错误我

2     007892   error    EXCEPTION: No provider for t!                                                                           
3     007893   error    ORIGINAL STACKTRACE:                                                                                    
4     007893   error    Error: No provider for t!                                                                               
    at e.Error (native)                                                                                                         
    at e [as constructor] (http://192.168.1.48:8100/build/main.js:5:4700)                                                       
    at e [as constructor] (http://192.168.1.48:8100/build/main.js:5:9276)                                                       
    at new e (http://192.168.1.48:8100/build/main.js:5:9604)                                                                    
    at t._throwOrNull (http://192.168.1.48:8100/build/main.js:5:26583)                                                          
    at t._getByKeyDefault (http://192.168.1.48:8100/build/main.js:5:26939)                                                      
    at t._getByKey (http://192.168.1.48:8100/build/main.js:5:26494)                                                             
    at t.get (http://192.168.1.48:8100/build/main.js:5:22859)                                                                   
    at e.get (http://192.168.1.48:8100/build/main.js:7:14254)                                                                   
    at e.get (http://192.168.1.48:8100/build/main.js:8:1442)                                                                    
5     007895   error    Uncaught Error: No provider for t!, http://192.168.1.48:8100/build/polyfills.js, Line: 3

我的离子信息

  

Cordova CLI:6.3.1
  Gulp版本:CLI版本3.9.1
  Gulp local:
  离子框架版本:2.0.0-rc.1
  离子CLI版本:2.1.0
  Ionic App Lib版本:2.1.0-beta.1
  ios-deploy版本:未安装
  ios-sim版:未安装
  操作系统:Mac OS X El Capitan
  节点版本:v6.7.0
  Xcode版本:Xcode 7.3.1构建版本7D1014

从堆栈跟踪

我明白我需要使用像提供程序这样的东西:[ConnectionService]但我不知道如何在Sales-Service提供中使用它。任何建议都会有所帮助。谢谢。

更新#1

我尝试在app.module.ts文件中注入两个服务,如下所示

  
      
  1. 提供商:[ConnectionService,SalesService] // 此作品,感谢 @jmilloy @camaron
  2.   

更新#2

我创建了一个新项目并且我复制了错误

  

没有FirstService的提供商!

但在我原来的项目中,错误应该说

  

没有ConnectionService的提供商!

//而不是说

  

没有t的提供者! //它指的是什么?

更新#3 我已将我的项目上传到我的仓库中。看看这个。

This is my original project repo //问题解决了,不得不清理npm缓存。

This is my new project repo //根据给出的答案解决问题

2 个答案:

答案 0 :(得分:2)

您的问题似乎是SalesService,您在组件上使用provider: [SalesService]?如果不是,您应该将SalesService添加到 app.module.ts

上的providers: [ConnectionService, SalesService]

答案 1 :(得分:0)

尝试

import { Injectable, Inject } from '@angular/core';
import { Http, Headers } from '@angular/http';
import { ConnectionService } from './connection-service';
import 'rxjs/add/operator/map';

@Injectable()
export class SalesService {
  connection:ConnectionService;
  constructor(public http: Http, @Inject(ConnectionService) connection:ConnectionService) {
    this.connection = connection;
    this.http = http;
    this.connection.getConnectionInfo();
  }

  getSalesData(): any {
    return this.http.get("http://"+this.connection.ip+":"+this.connection.port+"/DasherAPI/public/api2/getCompanySalesFull");
  }
}

检查构建器上的@Inject,不要忘记Inject导入。