2016-05-03 8 views
0

Hallo, ich versuche, eine Anmeldeseite in ionic 2 zu erstellen, die Nutzername, E-Mail und Passwort an die API schreibt, die ich benutze. Aber ich bekomme diesen Fehler TypeError: this.http.post is not a function. Ich habe bereits nach diesem Problem gesucht und es versucht, aber es funktioniert nicht für mich.Ionic 2 TypeError: this.http.post ist keine Funktion

Hier ist mein 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'); 
    } 
} 

bitte helfen!

Antwort

2

Ich denke, dass es ist, weil die Reihenfolge der Anbieter Sie auf der Ebene des parameters Getter verwenden und den Konstruktor:

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

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

Sie müssen das Recht auf die gleiche Reihenfolge auf beiden Ebenen (und auch in eckigen Klammern definieren Art und Weise), wie unten beschrieben:

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

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

dank, aber jetzt sagt, es POST http: // localhost: 8000/api/v1/auth/400 (Bad Request) registrieren, habe ich bereits die api mit Postbote testen und es funktioniert. Nur für den Fall, das ist die API, die ich benutze https://sampleapi.demo.rocks –

+0

sorry ... mein schlechtes .... ich schrieb die Anwendung/x-www-form-urlencoded falsch .... es sollte sein application/x-www-form-urlencoded –

+0

das finde ich nicht ;-) Da möchtest du ein Formular anstelle von JSON-Inhalten senden. Sie sollten die URLSearchParams-Klasse verwenden, um die Payload zu erstellen und die Rückgabe der toString-Methode anstelle der body-Variablen festzulegen ... –

Verwandte Themen