Либо stati c Ошибка впрыска, либо: Пожалуйста, добавьте ошибку аннотации @NgModule из angular - PullRequest
3 голосов
/ 24 февраля 2020

В моем приложении angular один из компонентов вызывает метод из сервисного модуля (app.service.ts), который использует модуль 'HttpClient' для вызова остальных API с помощью basi c auth ('username': «пароль»), я использовал модуль «HttpHeaders» для установки заголовков, как показано ниже:

export class ApiService {

 constructor(private httpClient: HttpClient,private httpHeaders: HttpHeaders) {
     this.httpHeaders.set('Authorization','Basic ' + btoa('usename1:password1'));
     this.httpHeaders.append('Content-Type','application/json');
  }
  public getApiData(url:any){
    return this.httpClient.get(url,{headers:this.httpHeaders});
  }
}

возникает ошибка внедрения c, как показано ниже:

StaticInjectorError [ NesinfoComponent -> ApiService]: StaticInjectorError (AppModule) [ApiService -> HttpHeaders]: StaticInjectorError (Платформа: ядро) [ApiService -> HttpHeaders]: NullInjectorError: Нет поставщика для HttpHeaders! * 100 * * * * * «HttpHeaders» в app.modules.ts и добавил его в раздел импорта:

import { HttpClientModule,HttpHeaders } from '@angular/common/http';
imports: [
          HttpClientModule,
          HttpHeaders
]

теперь инъекция stati c разрешена, но выдает ошибку:

Неожиданное значение «HttpHeaders», импортированное модулем «AppModule». Пожалуйста, добавьте аннотацию @NgModule.

как вызвать остальные API в angular8, для которых требуется базовый c auth в заголовках?

1 Ответ

1 голос
/ 24 февраля 2020

HttpHeaders не является модулем, и это не то, что вы должны вводить. Просто импортируйте его в свой сервис и создайте новый экземпляр на месте с new HttpHeaders(). Вот как это должно быть:

export class ApiService {

 constructor(private httpClient: HttpClient) {  }
  private createAuthHeaders(): HttpHeaders {
     return new HttpHeaders({
       Authorization: `Basic ${btoa('usename1:password1')}`,
       'Content-Type': 'application/json'
     });
  }

  public getApiData(url:any){
    const httpHeaders = this.createAuthHeaders();
    return this.httpClient.get(url,{headers: httpHeaders});
  }
}
import { HttpClientModule} from '@angular/common/http';
imports: [
  HttpClientModule
]
...