调用AuthService => login
时,记录器会在浏览器控制台中正确附加Foo!
当调用ErroHandler => handleError
时,记录器的实例总是未定义的(除了在类的构造函数中)。我希望看到Bar!
也附加在浏览器控制台中。
谁能解释一下这种行为?
答案 0 :(得分:1)
问题与依赖注入无关。如果发生DI问题,则会导致编译器出现错误消息。
这是因为var address = new System.Uri(refURL);
var scheme = address.Scheme ;
var host = address.Host;
方法在此处作为回调传递:
errorHandler.handleError
并且未正确绑定到上下文。
这是一个典型的错误。除非已知对象方法绑定在对象构造上(这对于应该被设计用作回调的方法是一个好习惯),它总是应该像
.catch(this.errorHandler.handleError);