在Angular中将指令与其他服务一起使用

时间:2019-11-07 10:39:46

标签: angular typescript angular-directive angular-services angular-httpclient

我必须从错误的角度来解决这个问题,但这是问题所在。我有一个异步验证指令,该指令使用HttpClient来对后端进行验证。除了一件关键的事情,它几乎是独立的–它需要正确的HTTP标头才能在服务器端通过身份验证。这是构造函数的外观:

constructor( 
    private http: HttpClient,
    private auth: AuthService,
    @Optional() @Self() @Inject(NG_VALUE_ACCESSOR) valueAccessors: ControlValueAccessor[]
) { 
    this.valueAccessor = valueAccessors.find( x => x.constructor === DataTextInputComponent) as DataTextInputComponent;
}

auth服务具有正确的标头,然后将其与请求一起使用。

我最近用Nx将项目拆分为libsapps,并希望在不同的上下文中使用此伪指令,其中标头和请求url不同。我该如何实现?

1 个答案:

答案 0 :(得分:2)

现在,我了解您的问题,可以放心地建议您使用http interceptors。它们实际上将充当中间件,并在调用完成之前修改请求。您可以在模块级别提供拦截器,以确保每个模块可以使用不同的拦截器。

这还将确保您遵守单一责任原则,因为此指令可以进行验证调用,而不必担心设置正确的标头。

这是angular v5

中HTTP拦截器实现的示例