2016-06-12 152 views
0

我試圖創建一個樣本angular2服務並使用它,但我不確定我所做的錯誤。服務方法不能由組件調用,請參閱plunker更多細節https://plnkr.co/edit/tlnGU9Er6GxsOaUMCZZG?p=previewangular2服務方法沒有被調用

我的服務代碼看起來像下面

import { Injectable } from 'angular2/core'; 
import { HTTP_PROVIDERS, Http, Headers, Response, JSONP_PROVIDERS, Jsonp } from 'angular2/http'; 
import { Configuration } from './Configuration'; 
import 'rxjs/add/operator/map' 
import { Observable } from 'rxjs/Observable'; 

///Service class to call REST API 
@Injectable() 
export class SampleService { 
    items: Array<any>; 

    constructor() { 
     this.items = [ 
      { name: 'Test1' }, 
      { name: 'Test2' }, 
      { name: 'Test3' } 
     ]; 
    } 

    getItems() { 
     return this.items; 
    } 
} 
+1

使用新的 - >角度 - > 2.0 TS http://take.ms/AJTLh – yurzui

+0

你是index.html頁面不包括任何anuglar2代碼,它不會被設置爲從typescript轉換到javascript使用System.js。請考慮以下教程以完成缺少的peices:https://angular.io/docs/ts/latest/quickstart.html – Tucker

+0

請注意,您的組件文件名是'SampleCompoent.ts' –

回答

0

您需要包括供應商的陣列中的@Injectable服務當你引導應用程序(在你的案例bootstrap(SampleComponent, [SampleService]))或組件內的提供者數組。更多關於依賴注入,你可以在這裏閱讀:https://angular.io/docs/ts/latest/guide/dependency-injection.html

將它作爲提供程序添加後,無論何時將其注入到類構造函數中,該組件都將能夠解析它。在閱讀該鏈接後,依賴注入樹如何工作將會很清楚:)

同樣在plunkr中,您有兩個組件與選擇器('my-app')相同,我猜這也是一個錯誤。

+0

我完成了所有您提出的更改,仍然沒有按預期工作。請您檢查重新搜索並糾正我的錯誤? – Krishnan

+0

https://plnkr.co/edit/hI7z0Hnx7ssgDdwd3n12?p=preview在這裏,你去..我叉並更新它..你有2個問題。第一個是在bootstrap.ts中,在將它用於來自'。/ SampleService''''的依賴數組'''import {SampleService}之前,您沒有導入該服務。其次,你從錯誤的地方導入了bootstrap函數本身(你沒有在那裏使用RC版本,而是一個測試版本),它是從'angular2/platform/browser'導入{bootstrap};''不是''' '@angular/...'''。第三個單詞'''ng'在ngFor中不存在,所以我用#item改變了它 –