2017-03-10 65 views
2

我從ionic v2,angular2和typeScript開始。所以我試圖設置一個離子登錄頁面,它檢索登錄憑證並聯系遠程api進行身份驗證。我顯然需要有角度的Http客戶端。如何將角度HttpModule導入根NgModule

的src /應用/ app.component.ts樣子:

import { Component } from '@angular/core'; 
import { Platform } from 'ionic-angular'; 
import { StatusBar, Splashscreen } from 'ionic-native'; 


import { LoginPage } from '../pages/login/login'; 


@Component({ 
    templateUrl: 'app.html' 
}) 
export class MyApp { 
    rootPage = LoginPage; 

    constructor(platform: Platform) { 
    platform.ready().then(() => { 

     StatusBar.styleDefault(); 
     Splashscreen.hide(); 
    }); 
    } 
} 

的src /應用/ app.module.ts樣子:

import { NgModule, ErrorHandler } from '@angular/core'; 
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; 
import { MyApp } from './app.component'; 
import { LoginPage } from '../pages/login/login'; 
import { AuthService } from '../providers/auth-service'; 
import { HttpModule, JsonpModule } from '@angular/http'; 

@NgModule({ 
    declarations: [ 
    MyApp, 
    LoginPage, 
    HttpModule, 
    JsonpModule, 

    ], 
    imports: [ 
    IonicModule.forRoot(MyApp) 
    ], 
    bootstrap: [IonicApp], 
    entryComponents: [ 
    MyApp, 
    LoginPage 
    ], 
    providers: [{provide: ErrorHandler, useClass: IonicErrorHandler},AuthService] 
}) 
export class AppModule {} 

當然任何其他必要的文件(page/login/login。*和provider/auth-service.ts)被定義,所以沒有丟失文件或服務錯誤。

問題:

當我通過ionic serve構建應用程序,該程序完成且沒有錯誤,但推出的瀏覽器應用程序時,我得到這個錯誤:

意外的模塊「的HttpModule」聲明由模塊「AppModule」
不過,我只是按照this tutorial from the official documentation的說明。
我一直在谷歌搜索,因爲幾個小時沒有找到解決辦法。
有人能告訴我我做錯了什麼?

+0

將'HttpModule'移動到'imports'數組。並且還'JsonpModule'閱讀更多https://angular.io/docs/ts/latest/cookbook/ngmodule-faq.html#!#q-what-to-import – yurzui

+0

@yurzui,謝謝,併爲這個愚蠢的問題感到抱歉! –

回答

2

你應該導入HttpModule如下,

imports: [ 
    HttpModule, 
    JsonpModule 
    ... 
    ... 
} 

注:同樣的,JsonpModule。並且不要忘記從declarations陣列中刪除它們。

+1

謝謝,對不起這個愚蠢的問題,但我必須將答案標記爲真,並且它是屬於你的。 –

+0

發生!沒關係 !! – micronyks

+1

來自我身邊的一條評論。在導入HttpModule時,VsCode會導入錯誤的包,例如'@ angular/http/src/http_module';'的import {HttpModule}。我們應該修復這個軟件包'從'@ angular/http';'import {HttpModule}以便它可以工作。 –

1

declarations屬性用於聲明本模塊中的每個組件和管道,允許您在模塊中使用它們。

要使用另一個模塊中的當前一個,你必須使用imports屬性,像這樣:

@NgModule({ 
    declarations: [ 
    MyApp, 
    LoginPage 
    ], 
    imports: [ 
    IonicModule.forRoot(MyApp), 
    HttpModule, 
    JsonpModule 
    ], 
    bootstrap: [IonicApp], 
    entryComponents: [ 
    MyApp, 
    LoginPage 
    ], 
    providers: [{provide: ErrorHandler, useClass: IonicErrorHandler},AuthService] 
}) 
+0

從技術上講,你的答案並不是真的,因爲你已經忘記移動'JsonpModule'了......因此我必須將@micronyks標記爲true。 –

+0

woops是的,他編輯了他的答案,而我沒有,因爲我沒有看到這個:/編輯:編輯它,但無論如何,如果你有什麼你正在尋找一切都很好:D – Supamiu

+0

這是正確的,如果它只是有棱角的而不是離子的 –

0

至於離子2而言,您無需單獨導入的HttpModule可言。 IonicModule會替你的鏈接像這樣:

exports: [ 
    BrowserModule, 
    HttpModule, 
    FormsModule, 
    ReactiveFormsModule, 

您可以直接使用components.Similar的形式。