2017-07-24 66 views
-2
import { Injectable } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 
import { Observable } from 'rxjs/Observable'; 

// format of Product Interface so typing mistakes will be avoided 
import { IProduct } from './product'; 

@Injectable() 

export class ProductService { 
    private _productUrl = 'api/products/products.json'; 
    constructor(private _http: Http){ 
    } 

    getProducts(): Observable<IProduct[]> { 
     return this._http.get(this._productUrl) 
      .map((response: Response) => <IProduct[]>response.json()) 
      .do(data => console.log("All: " + JSON.stringify(data))) 
      .catch(this.handleErrors); 
    } 

    private handleErrors(error: Response){ 
     console.log('Error: ' + error); 
     return Observable.throw(error.json().error || 'Server Error'); 
    } 

} 

注射進口的文件的頂部,但在Chrome開發工具得到錯誤的特性「注射」 檢查下面無法讀取未定義角

Injectable Undefined

+2

您正在被錯誤信息誤導,似乎錯誤是在產品list.component –

+0

引起不知道這是否是顯著,但嘗試刪除@Injectable和出口之間的空白行... – JGFMK

+0

服務代碼看起來不錯。問題很可能出現在您的組件中(該長度相關的是提示)。你能提供更多的組件代碼嗎? –

回答

0

Chrome開發者工具的圖像看起來你是缺少Observable運算符的導入語句。嘗試通過其他導入語句將其添加到頂端。

import 'rxjs/add/operator/do'; 
import 'rxjs/add/operator/catch'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/observable/throw'; 
+0

控制檯面板中出現同樣的錯誤 –

+0

我假設你正在通過我的Pluralsight課程工作?在Pluralsight頁面上有一個練習文件選項卡。如果您單擊該選項卡,則可以將所有課程文件作爲zip文件下載。在課程的每個模塊的zip文件中都有一個文件夾。然後,您可以使用文件比較實用程序將您的文件與您當前所在模塊中的文件進行比較。 – DeborahK

相關問題