Angular2 服务依赖注入
Angular2 services dependency injection
调用 AuthService => login
时,记录器会在浏览器控制台中正确附加 Foo!
但
当 ErroHandler => handleError
被调用时,记录器的实例总是未定义的(除了在 class 的构造函数中)。我希望看到 Bar!
也被添加到浏览器控制台中。
谁能给我解释一下这种行为?
问题与依赖注入无关。如果出现 DI 问题,这会导致编译器出现错误消息。
发生这种情况是因为 errorHandler.handleError
方法在此处作为回调传递:
.catch(this.errorHandler.handleError);
并且未正确绑定到上下文。
这是一个典型的错误。除非知道对象方法绑定在对象构造上(这对于设计上应该用作回调的方法来说是一个好习惯),否则它应该总是像
.catch(err => this.errorHandler.handleError(err));
调用 AuthService => login
时,记录器会在浏览器控制台中正确附加 Foo!
但
当 ErroHandler => handleError
被调用时,记录器的实例总是未定义的(除了在 class 的构造函数中)。我希望看到 Bar!
也被添加到浏览器控制台中。
谁能给我解释一下这种行为?
问题与依赖注入无关。如果出现 DI 问题,这会导致编译器出现错误消息。
发生这种情况是因为 errorHandler.handleError
方法在此处作为回调传递:
.catch(this.errorHandler.handleError);
并且未正确绑定到上下文。
这是一个典型的错误。除非知道对象方法绑定在对象构造上(这对于设计上应该用作回调的方法来说是一个好习惯),否则它应该总是像
.catch(err => this.errorHandler.handleError(err));