Использование директивы с различными сервисами в Angular - PullRequest
0 голосов
/ 07 ноября 2019

Я, должно быть, подхожу к этому с ложной точки зрения, но здесь есть проблема. У меня есть асинхронная директива проверки, которая использует 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 сервис имеет правильные заголовки, которые затем будут использоваться с запросом.

Я недавно разделил свой проект на libs и apps с Nx и хотите использовать эту директиву в другом контексте, где заголовки и URL запроса различны. Как мне этого добиться?

1 Ответ

1 голос
/ 12 ноября 2019

Теперь я понимаю вашу проблему, могу с уверенностью рекомендовать вам использовать http перехватчиков . По сути, они будут действовать как промежуточное программное обеспечение и будут изменять запрос до того, как вызов будет завершен. Вы можете предоставлять перехватчики на уровне модулей, что обеспечит наличие разных перехватчиков на модуль.

Это также обеспечит соблюдение принципа единой ответственности, поскольку эта директива может выполнять вызовы проверки, не беспокоясь о настройкеправильные заголовки.

Вот пример реализации http-перехватчиков в angular v5

...