2017-04-05 128 views
1

在angular中,我們需要創建@Injactable服務類並將其提供給我們的項目。@injectable和es6模塊的角度服務

從理論上講,我們可以導入es6模塊,也可以作爲單例服務執行。

除了這不是「角度方式」,爲什麼這種方法不那麼普遍?

角方式

import { Injectable } from '@angular/core'; 
@Injectable() 
export class fo { 
    getFo():{ 
    } 
} 

ES6方式

const bla = [] 
    const fo() => {return bla} 
    export { 
     fo 
    } 
+0

你的兩個例子沒有任何共同之處。 – zeroflagL

回答

2

@Injectable()只需要當您的服務注入等服務。

例子:

@Injectable() 
export class fo { 
    constructor(private myOtherService: MyOtherService){} 
} 

其他你是正確的,它實際上返回一個const同樣的事情。但是,如果您想知道添加註釋和邏輯是一種好的做法。

來源:https://angular.io/docs/ts/latest/cookbook/dependency-injection.html#!#-injectable-

技術上,@Injectable()裝飾只需要擁有自己的依賴


不久,我們使用 @Injectables獲取/設置服務類數據和組件之間以及我們的應用程序之間的通信,這些都是我們依賴注入樹的一部分。 關於爲什麼您應該使用 @Injectable(),官方文檔有更深入的指南。

爲什麼@Injectable()?

@Injectable()標誌着一個類可用於噴油器實例化。一般來說,試圖實例化未標記爲@Injectable()的類時,注入器會報告錯誤。

來源:https://angular.io/docs/ts/latest/guide/dependency-injection.html#!#why--injectable--

+0

_「除此之外,你說得對,它是實用的同一件事」_絕對不是。 – zeroflagL

+0

@zeroflagL這是一個誇大的聲明,我很遺憾我寫道:D但由於OP只使用服務返回一個'const';對於這種用法,我想他們** **實際上是一樣的東西先生。當然,我認爲OP的'getFo()'方法返回與第二個例子中相同的'const'。 – echonax

+0

你是對的,在這種情況下,它可能並不重要,但它不是一個真實世界的例子。問題中的例子只是爲了說明這一點,答案不應侷限於此。 – zeroflagL