2017-07-11 30 views
3

我寫了一個'popping'消息(android toast like)組件。所有其他組件都將其作爲兄弟並通過共享服務訪問它。現在,我想從一個效用函數使用過,像這樣的:如何在導出的函數中注入服務?

export function handleError(errorResp: Response | any): Observable<string> { 
    .... 
    // here I would like to display the message 
    return Observable.throw(errMsg); 
} 

我以爲我可以將消息傳遞服務爲參數的HandleError,但我覺得這是不幹燥,因爲我需要做它來自每個組件事件,儘管該組件不需要它用於其他目的。你能給我一些指導嗎?

+1

由於此功能是您的角度應用之外,還有沒有太大的選擇。或者你通過參數傳遞它或者直接導入服務(通過Javascript導入),然後使用它 - 取決於它需要什麼要求(就像它與Angular完全脫鉤),它應該可以工作。如果它有任何Angular的要求,你應該把'handleError'函數放在另一個可以用依賴注入獲得Toast的服務中。 –

+1

Angular的服務只是一個普通的Javascript類。您可以正常導入和訪問其方法。 –

回答

0

由於此功能是您的角度應用之外,還有沒有太大的選擇。

  • 通過參數傳給它,或
  • 直接導入服務(通過Javascript進口,隨着角度的服務僅僅是一個正常的Javascript類),然後使用它。請注意,它可能不取決於什麼要求是必要的,以實例化服務工作(例如,如果它使用來自角一些功能,或注射用DI其他服務),或
  • 你可以把你的handleError功能的其他服務,可以讓通過依賴注入Toast的東西。