如何在导出的函数中注入服务?

时间:2017-07-11 10:04:39

标签: angular

我写了一个'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,但我觉得它不是DRY,因为我需要从每个组件事件中创建它,尽管组件不需要它用于其他目的。你能给我一些指导吗?

1 个答案:

答案 0 :(得分:1)

由于此功能在Angular应用程序之外,因此没有太多选择。

  • 通过参数或
  • 传递
  • 直接导入服务(通过Javascript导入,因为Angular的服务只是一个普通的Javascript类),然后使用它。请注意,它可能不起作用,具体取决于实例化服务所需的要求(如果它使用Angular的某些功能,或使用DI注入其他服务),或
  • 您可以将handleError函数放在另一个可以通过依赖注入获取Toast内容的服务中。