【问题标题】:Angular2 services dependency injectionAngular2服务依赖注入
【发布时间】:2017-02-05 10:42:10
【问题描述】:

当调用AuthService => login 时,记录器会在浏览器控制台中正确附加Foo!,但 当ErroHandler => handleError 被调用时,记录器的实例总是未定义的(除了在类的构造函数中)。我希望看到Bar! 也被附加在浏览器控制台中。 谁能解释一下这种行为?

参考:https://embed.plnkr.co/cKwT5R39IL1TTJBRvZyY/

【问题讨论】:

  • 是什么让您认为它没有正确注入?请提供解释问题本身的问题的详细信息。据我所知,不允许在没有相关代码的情况下发布 plunker 链接(在 SO 编辑器中对此进行了防范,但已被绕过)。

标签: angular dependency-injection angular2-services


【解决方案1】:

这个问题与依赖注入无关。如果发生 DI 问题,这会导致编译器出现错误消息。

这是因为errorHandler.handleError 方法在这里作为回调传递:

.catch(this.errorHandler.handleError);

并且没有正确绑定到上下文。

这是一个典型的错误。除非知道对象方法绑定在对象构造上(对于设计上应该用作回调的方法,这是一个好习惯),否则它应该总是像

.catch(err => this.errorHandler.handleError(err));

【讨论】:

    猜你喜欢
    • 2017-09-17
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多