我正在开发一个角度4应用程序,我遇到了一个情况,我有一个 htpInterceptor 基本服务类,它具有Typescript通用的GET,POST和DELETE函数。我希望我的所有角度服务都使用此基类。现在我不确定是否应该将此基本服务注入我的所有服务中,或者我应该使用此基本服务类扩展所有服务类。
我应该用,
<table>
要么
export class AuthService extends HttpInterceptorService
这两种方法之间有什么区别(利弊)。
以下是我的基本服务类
constructor(private _interceptor:HttpInterceptorService) { }
答案 0 :(得分:1)
使用导入的服务,您依赖Angular的DI,您可以决定将其包含在哪个级别。
使用extends
依赖于本机ES6语法,因此它可能更具可移植性。
所以我想这主要是一个偏好问题,你是否认为你可以在Angular之外使用你的代码。
同样使用扩展,您必须在调用父类的每个构造函数中调用super()
。如果你关心这一点,这并不像Angular那样...
答案 1 :(得分:1)
利弊取决于案件。但上面的代码是经典的构成与继承的困境。建议的方法通常为composition over inheritance。
在这种情况下,HttpInterceptorService
应该作为Http
的扩展替代品。所以应该注入而不是Http
。
如果AuthService
应该实现HttpInterceptorService
并扩展其功能(例如,包装现有方法并添加身份验证标头),那么它应该从HttpInterceptorService
继承