我必须从错误的角度来解决这个问题,但这是问题所在。我有一个异步验证指令,该指令使用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将项目拆分为libs
和apps
,并希望在不同的上下文中使用此伪指令,其中标头和请求url不同。我该如何实现?
答案 0 :(得分:2)
现在,我了解您的问题,可以放心地建议您使用http interceptors。它们实际上将充当中间件,并在调用完成之前修改请求。您可以在模块级别提供拦截器,以确保每个模块可以使用不同的拦截器。
这还将确保您遵守单一责任原则,因为此指令可以进行验证调用,而不必担心设置正确的标头。
中HTTP拦截器实现的示例