2017-06-15 46 views
0

我似乎无法让我的函数内部工作的Ajax,我在这里做错了什么?离子HTTP不工作功能

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 
      }); 
     }); 
     } 

    }); 

    } 

} 

我得到的错误是:

enter image description here

回答

0

new Http()呼叫需要2个参数:

constructor(_backend: ConnectionBackend, _defaultOptions: RequestOptions) 

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

尝试将其作为一个参数传递给构造方法为你的班级:

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

你还需要将HttpModule导入到你的引导代码,像这样:

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

仍与构造类不走: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

这意味着您的班级设置不正确。在你可以在你的类中注入'Http'类之前,有几件事情必须是真实的。查看本教程:https://angular.io/guide/http –

+0

本文有关于'HttpModule'的更多详细信息:https://medium.com/google-developer-experts/angular-2-introduction-to-new -http模块-1278499db2a0 –