2017-06-15 7 views
0

Ich kann nicht scheinen, Ajax zu bekommen, um innerhalb meiner Funktion zu arbeiten, was mache ich hier falsch?Ionic HTTP funktioniert nicht in Funktion

import { FormControl } from '@angular/forms'; 
import { Http } from '@angular/http'; 

export class EmailValidator { 

    static checkEmail (control: FormControl): any { 
    var $http = new Http; 

    return new Promise(resolve => { 

     var lowercaseValue = control.value.toLowerCase(); 
     if(lowercaseValue.indexOf('@') <= -1 || lowercaseValue.indexOf('.') <= -1) { 
     resolve({ 
      "invalid email": true 
     }); 
     } else { 
     $http({ 
      method: 'GET', 
      url: '{URL}'+lowercaseValue 
     }).then(function successCallback(response) { 
      if(response.error == true) { 
      resolve(response); 
      } else { 
      resolve(null); 
      } 
     }, function errorCallback(response) { 
      resolve({ 
       "invalid email": true 
      }); 
     }); 
     } 

    }); 

    } 

} 

Der Fehler, den ich bekommen ist:

enter image description here

Antwort

0

new Http() Aufruf erfordert zwei Parameter:

constructor(_backend: ConnectionBackend, _defaultOptions: RequestOptions) 

https://angular.io/api/http/Http

Versuchen es als Argument für den Konstruktor Hinzufügen für deine Klasse :

export class EmailValidator { 
    contstructor($http: Http) {} 
    ... 

Sie müssen auch die HttpModule in der Bootstrap-Code importieren, etwa so:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { HttpModule } from '@angular/http'; 
import { AppComponent } from './app.component'; 

@NgModule({ 
    imports: [ BrowserModule, HttpModule ], 
    declarations: [ AppComponent ], 
    bootstrap: [ AppComponent ] 
}) 
class AppModule { } 

platformBrowserDynamic().bootstrapModule(AppModule); 
+0

noch mit einem Konstruktor Klasse no go: http://cdn.microthosting.com/imgs/ Screenshot_at_2017-06-15_12-02-58.png http://cdn.microthosting.com/imgs/Screenshot_at_2017-06-15_12-03-13.png – jfreak53

+0

Das bedeutet, dass Ihre Klasse nicht richtig eingerichtet ist. Es gibt ein paar Dinge, die wahr sein müssen, bevor Sie die Klasse "Http" in Ihre Klasse injizieren können. Sehen Sie sich dieses Tutorial an: https://angular.io/guide/http –

+0

Dieser Artikel enthält weitere Einzelheiten zum 'HttpModule': https://medium.com/google-developer-experts/angular-2-introduction-to-new -http-modul-1278499db2a0 –