2016-05-03 10 views
0

こんにちは私は使用しているapiにユーザー名、電子メール、パスワードを投稿するionic 2のサインアップページを作ろうとしています。しかし、私はこのエラーTypeError: this.http.post is not a functionを取得します。私はすでにこの問題について検索してみましたが、それは私のためには機能しません。Ionic 2 TypeError:this.http.postは関数ではありません

ここにあります私のsignup.js:

import {Injectable, Inject} from 'angular2/core'; 
import {Page, NavController} from 'ionic-angular'; 
import {TabsPage} from '../tabs/tabs'; 
import {UserData} from '../../providers/user-data'; 
import {Http, Headers, RequestOptions} from 'angular2/http'; 
import {Observable} from 'rxjs/Observable'; 
import 'rxjs/Rx'; 

@Page({ 
    templateUrl: 'build/pages/signup/signup.html' 
}) 
@Injectable() 
export class SignupPage { 
    static get parameters() { 
    return [[Http], [NavController], [UserData]]; 
    } 

    constructor(nav, userData, http) { 
    this.nav = nav; 
    this.userData = userData; 
    this.http = http; 

    this.signup = {}; 
    this.submitted = false; 
    } 

    onSignup(form) { 
    let body = JSON.stringify(form.value); 
    let headers = new Headers(); 
    headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
    headers.append('Accept', 'application/json'); 
    let options = new RequestOptions({ headers: headers }); 
    this.http.post('http://localhost:8000/api/v1/auth/register', body, options) 
     .map(res => res.json()) 
     .subscribe(
      data => this.success = data 
     ) 
     .catch(this.handleError); 
    } 

    handleError(error) { 
     console.error(error); 
     return Observable.throw(error.json().error || 'Server error'); 
    } 
} 

助けてください!

static get parameters() { 
    return [[Http], [NavController], [UserData]]; // <----- 
} 

constructor(nav, userData, http) { // <----- 
} 

あなたは両方のレベル(とも角括弧の右に同じ順序を定義する必要があります。

答えて

2

は、私はあなたがparametersゲッターのレベルとコンストラクタで使用のプロバイダの順序はので、それはだと思います以下に説明するような方法)、:

static get parameters() { 
    return [[NavController, UserData, Http]]; // <----- 
} 

constructor(nav, userData, http) { 
} 
+0

おかげで、今では、POSTはhttpは言う:// localhostを:8000/API/V1/AUTH/400(不正な要求)を登録、私はすでに郵便配達でAPIをテストしてきましたそれは働く。場合には、これは私がhttps://sampleapi.demo.rocksを使用するapiです –

+0

申し訳ありません...私の悪い....私はアプリケーション/ x-www-form-urlencodedのスペルを間違っていました.... application/x-www-form-urlencodeded –

+0

私はそうは思わない;-) JSONコンテンツの代わりにフォームを送信したいからです。ペイロードを作成し、body変数の代わりにtoStringメソッドの戻り値を設定するには、URLSearchParamsクラスを使用する必要があります。 –

関連する問題