2016-08-29 71 views
4

我遵循NativeScript雜貨Typescript Angular教程和我陷入了第3章,出現以下錯誤。NativeScript沒有提供Http

EXCEPTION: Error in ./AppComponent class AppComponent_Host - inline template:0:0 
ORIGINAL EXCEPTION: No provider for Http! 
ORIGINAL STACKTRACE: 
Error: DI Exception 
at NoProviderError.BaseException [as constructor] (/data/data/org.nativescript.groceries/files/app/tns_modules/@angular/core/src/facade/exceptions.js:27:23) 
at NoProviderError.AbstractProviderError [as constructor] (/data/data/org.nativescript.groceries/files/app/tns_modules/@angular/core/src/di/reflective_exceptions.js:43:16) 
at new NoProviderError (/data/data/org.nativescript.groceries/files/app/tns_modules/@angular/core/src/di/reflective_exceptions.js:80:16) 
at ReflectiveInjector_._throwOrNull (/data/data/org.nativescript.groceries/files/app/tns_modules/@angular/core/src/di/reflective_injector.js:786:19) 
at ReflectiveInjector_._getByKeyDefault (/data/data/org.nativescript.groceries/files/app/tns_modules/@angular/core/src/di/reflective_injector.js:814:25) 
at ReflectiveInjector_._getByKey (/data/data/org.nativescript.groce 

我已經來回的教程,看看我是否錯過了一些東西,但似乎我孜孜不倦地跟着每一步。

如何解決此問題。

+0

嗨,你在幹什麼的打字稿角教程或Javascript教程? 請使用Typescript Angular教程更新您的帖子 – Kansen

+0

。我已更新該帖子。 – ammezie

+0

你在給Angular的bootstrap傳遞什麼? – rrjohnson85

回答

0

早安通常這個錯誤是由不自舉HTTP_PROVIDER在您的應用程序,像這樣造成的:

import { HTTP_PROVIDERS } from '@angular/http'; 

nativeScriptBootstrap(AppComponent, [HTTP_PROVIDERS]); 
+0

我認爲nativescript提供了一個包含NS_HTTP_PROVIDERS角色的HTTP_PROVIDERS的包裝器 – ammezie

+0

過去,我只是簡單地在NativeScript中使用角色中的HTTP_PROVIDERS成功。您可能想嘗試一下,看看它是否能解決您的錯誤。 編輯:在該示例中雜貨的應用程序TJ使用NS_HTTP_PROVIDERS https://github.com/NativeScript/sample-Groceries/tree/angular-end/app – theOriginalJosh

+0

@ammezie的NS_HTTP_PROVIDERS延伸從@角/ HTTP與在HTTP此外,它允許直接使用Http服務從應用程序包獲取資源。看到https://github.com/NativeScript/nativescript-angular/wiki/Http –

12

更新

如果你有因爲NativeScript Angular2打字稿教程這裏,下一步修復問題(在撰寫本文時)。

原始

顯然,本教程缺少一個步驟。

我不得不添加下面兩行:

// app.module.ts 

import { NativeScriptHttpModule } from "nativescript-angular"; 

NativeScriptHttpModule 

我用下面(app.module.ts)結束:

import { NgModule } from "@angular/core"; 
import { NativeScriptFormsModule } from "nativescript-angular/forms"; 
import { NativeScriptModule } from "nativescript-angular/platform"; 
import { NativeScriptHttpModule } from "nativescript-angular"; 

import { AppComponent } from "./app.component"; 

@NgModule({ 
    imports: [ 
    NativeScriptModule, 
    NativeScriptFormsModule, 
    NativeScriptHttpModule 
    ], 
    declarations: [AppComponent], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 
+0

我通過從'「@ angular/http」'導入'HttpModule'或多或少完成相同的事情' 。你知道使用一種與另一種的優缺點嗎? –

+0

我不知道。我懷疑原生http模塊設置爲角度http的提供者,因此它可能與依賴注入相同。但這只是一個猜測。 –

+0

謝謝。我不能說我明白'NativeScriptHttpModule'的實現(它看起來只是一個空類),但我認爲它以某種方式註冊了['NSHttp'](https://github.com/NativeScript/nativescript-angular /blob/master/nativescript-angular/http/ns-http.ts)爲可注射。該類除去URL中的任何前導'「〜」或「/」。關於OP的問題(我也有過),事實證明,本教程將在下一個練習中解決問題(您推薦的方式)。我認爲是一個糟糕的補習組織的例子。 –