我不能将 Injectable class 作为服务导入吗

Can't I import an Injectable class as service

我正在使用 Ionic 2 构建应用程序并遇到了问题。任何帮助将不胜感激。

我正在使用名为 plan-data.ts 的服务来获取和 post 数据到 firebase database.The 我遇到的问题 运行 是当我尝试导入时并在一些特定组件上声明 plan-data.ts 文件,它会出错。在下面的页面上,它工作正常!

    **DASHBOARD.ts**
    import { Component } from '@angular/core';
    import { NavController, NavParams } from 'ionic-angular';
    import { PlanData } from '../../providers/plan-data/plan-data';

    @Component({
      templateUrl: 'build/pages/dashboard/dashboard.html',
      providers: [PlanData]
    })
    export class DashboardPage {

      constructor(private navCTRL: NavController, public planData: PlanData){
        this.planData = planData;
        this.loadList();
      }
      ...
    }

但是在这个文件上,当我尝试将其导入并声明为 provider 时,它失败并出现错误:Cannot read property 'parameters' of undefined.

    **STOPWATCH.ts**
    import { Component } from '@angular/core';
    import { NavController, NavParams } from 'ionic-angular';
    import { PlanData } from '../../providers/plan-data/plan-data';

    @Component({
      templateUrl: 'build/pages/watch-calc/watch-calc.html',
      providers: [PlanData]
    })
    export class WatchCalcPage {

      constructor(private navCTRL: NavController, public planData: PlanData) {
        this.planData = planData;
      }

我似乎无法弄清楚第二页上有什么不同或错误,而且似乎找不到任何人遇到这个问题,这意味着可能是我没有看到简单的东西。和建议会很有帮助,谢谢!

I am using a service called plan-data.ts to get and post data to a firebase database

有意要在每个页面中创建 PlanData class 的新实例吗?通过将它添加到 DashboardPageWatchCalcPage 的提供程序数组中,将为每个页面创建一个 不同的 实例。

为了在整个应用程序中使用同一个实例,您应该在最顶层组件的提供程序数组中包含 PlanData class,如下所示:

@Component({
  templateUrl: 'build/app.html',
  providers: [PlanData, ...]
})
export class MyApp { ... }

然后将其包含在构造函数中

import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { PlanData } from '../../providers/plan-data/plan-data';

@Component({
  templateUrl: 'build/pages/watch-calc/watch-calc.html'
})
export class WatchCalcPage {

  constructor(private navCTRL: NavController, public planData: PlanData) {
    // this.planData = planData; <- you don't need to do this; it's done automatically by typescript because it's included as a parameter in the constructor.
  }