2017-06-15 76 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 –