Ionic 2 - Importing/Injecting Angular 2 HTTP 组件
Ionic 2 - Importing/Injecting Angular 2 HTTP Component
我有一个 ionic 2 应用程序,我一直在使用本地数据对其进行测试。现在,我正在尝试向我的 api 发出一些 Ajax 请求以获取数据。
在我的 app.js
文件中,我这样定义我的组件:
import {UserProvider} from './providers/user-provider';
...
@App({
templateUrl: 'build/app.html',
providers: [UserProvider]
})
然后,我的 user-provider.js
文件定义如下:
import {Injectable} from 'angular2/core';
import {Http, httpInjectables} from 'angular2/http';
@Injectable()
export class UserProvider {
constructor(http: Http) {
http.get('www.someURL.com').toRx().map(res => res.json())
.subscribe(data => console.log(data));
}
}
然后,最后,我正在使用我的 signup.js
文件初始化我的 "Sign Up" 视图:
import {Page, NavController} from 'ionic/ionic';
import {TabsPage} from '../tabs/tabs';
import {UserProvider} from '../../providers/user-provider';
@Page({
templateUrl: 'build/pages/signup/signup.html'
})
export class SignupPage {
constructor(nav: NavController, userProvider: UserProvider) {
this.userProvider = userProvider;
this.nav = nav;
}
}
我的预期结果是在我的注册视图初始化时,将注入 UserProvider
。因此,它的构造函数将 运行,这将触发 UserProvider
构造函数中的 http.get
函数。然后我应该在我的浏览器网络选项卡中看到一个网络调用。
但是,我收到此错误:
EXCEPTION: Error during instantiation of UserProvider! (SignupPage -> UserProvider)
app.bundle.js:33693 TypeError: http.get(...).toRx is not a function
at new UserProvider (app.bundle.js:60706)
为什么 http.get.toRx()
会导致错误?我最初尝试过这样的承诺:
http.get('www.someURL.com').then(() => {
console.log('test');
});
但这会引发类似的错误。
在angular2-beta0中http.get()
已经returns一个Observable
,不需要调用它之前的.toRx()
方法,直接调用.map()
等等。
我有一个 ionic 2 应用程序,我一直在使用本地数据对其进行测试。现在,我正在尝试向我的 api 发出一些 Ajax 请求以获取数据。
在我的 app.js
文件中,我这样定义我的组件:
import {UserProvider} from './providers/user-provider';
...
@App({
templateUrl: 'build/app.html',
providers: [UserProvider]
})
然后,我的 user-provider.js
文件定义如下:
import {Injectable} from 'angular2/core';
import {Http, httpInjectables} from 'angular2/http';
@Injectable()
export class UserProvider {
constructor(http: Http) {
http.get('www.someURL.com').toRx().map(res => res.json())
.subscribe(data => console.log(data));
}
}
然后,最后,我正在使用我的 signup.js
文件初始化我的 "Sign Up" 视图:
import {Page, NavController} from 'ionic/ionic';
import {TabsPage} from '../tabs/tabs';
import {UserProvider} from '../../providers/user-provider';
@Page({
templateUrl: 'build/pages/signup/signup.html'
})
export class SignupPage {
constructor(nav: NavController, userProvider: UserProvider) {
this.userProvider = userProvider;
this.nav = nav;
}
}
我的预期结果是在我的注册视图初始化时,将注入 UserProvider
。因此,它的构造函数将 运行,这将触发 UserProvider
构造函数中的 http.get
函数。然后我应该在我的浏览器网络选项卡中看到一个网络调用。
但是,我收到此错误:
EXCEPTION: Error during instantiation of UserProvider! (SignupPage -> UserProvider)
app.bundle.js:33693 TypeError: http.get(...).toRx is not a function
at new UserProvider (app.bundle.js:60706)
为什么 http.get.toRx()
会导致错误?我最初尝试过这样的承诺:
http.get('www.someURL.com').then(() => {
console.log('test');
});
但这会引发类似的错误。
在angular2-beta0中http.get()
已经returns一个Observable
,不需要调用它之前的.toRx()
方法,直接调用.map()
等等。