我在使用 Ionic 2 和 Angular 2 时遇到了类似的问题。我有一个 app.ts 和一个 login.ts 以及一个 user-data.ts(就像你的 api.ts 一样)。
app.ts <- login.ts <- user-data.ts
当我将 UserData 类作为提供程序放入 login.ts 和 app.ts 时,一切都开始工作了。
app.ts是这样的:
@Component({
templateUrl: 'build/app.html',
directives: [ROUTER_DIRECTIVES],
providers: [
{
provide: TranslateLoader,
useFactory: (http: Http) => new TranslateStaticLoader(http, 'assets/i18n', '.json'),
deps: [Http]
},
TranslateService,
ROUTER_PROVIDERS,
UserData
]
})
login.ts是这样的
import {Page, NavController} from 'ionic-angular';
import {UserData} from '../../providers/user-data-provider/user-data';
@Page({
templateUrl: 'build/pages/login/login.html',
providers: [UserData]
})
export class LoginPage {
...
}
和user-data.ts是这样的
import {Injectable} from '@angular/core';
import {Storage, LocalStorage, Events} from 'ionic-angular';
@Injectable()
export class UserData {
...
}
我在用:
C:\ionic2\myapp>npm list -depth=0
+-- @angular/common@2.0.0-rc.3
+-- @angular/compiler@2.0.0-rc.3
+-- @angular/core@2.0.0-rc.3
+-- @angular/forms@0.1.1
+-- @angular/http@2.0.0-rc.3
+-- @angular/platform-browser@2.0.0-rc.3
+-- @angular/platform-browser-dynamic@2.0.0-rc.3
+-- @angular/router@2.0.0-rc.2
+-- cordova@6.3.0
+-- del@2.2.0
+-- es6-shim@0.35.1
+-- gulp@3.9.1
+-- gulp-watch@4.3.5
+-- ionic-angular@2.0.0-beta.10
+-- ionic-gulp-browserify-typescript@2.0.0
+-- ionic-gulp-fonts-copy@1.0.0
+-- ionic-gulp-html-copy@1.0.0
+-- ionic-gulp-sass-build@1.0.0
+-- ionic-gulp-scripts-copy@2.0.1
+-- ionic-gulp-tslint@1.1.0
+-- ionic-native@1.3.2
+-- ionicons@3.0.0
+-- ng2-bootstrap@1.0.17
+-- ng2-translate@2.2.2
+-- reflect-metadata@0.1.3
+-- run-sequence@1.1.5
+-- rxjs@5.0.0-beta.6
+-- tslint-ionic-rules@0.0.3
`-- zone.js@0.6.12
希望能帮助到你