Ioni c Angular HttpClient впрыск не работает - PullRequest
0 голосов
/ 26 апреля 2020

Я автоматически сгенерировал сервисный модуль WebAPI с NSwagStudio, чтобы соединить мое приложение Ionic / Angular и мой веб-сервис вместе. Этот сервис (WebApiConnector.Client) настроен для внедрения:

imports: [
    BrowserModule,
    IonicModule.forRoot(),
    AppRoutingModule,
    AngularFireModule.initializeApp(firebaseConfig),
    AngularFireAuthModule,
    HttpClientModule
  ],
  providers: [    
    GooglePlus,
    StatusBar,
    SplashScreen,
    { provide: WebApiConnector.API_BASE_URL, useValue: environment.apiURL },
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
    { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptorService, multi: true },
    { provide: ErrorHandler, useClass: GlobalErrorHandler},
    AuthService,
    WebApiConnector.Client

  ],

Когда я запускаю приложение в браузере или отлаживаю его на устройстве android, все работает как чудо, но когда я встраиваю его в производство с:

ionic cordova build android --prod --release

HttpClient, внедренный в службу WebAPI, кажется неопределенным, потому что, когда выполняется первый вызов, приложение попадает в это исключение:

Uncaught (в обещании ): TypeError: Невозможно прочитать свойство 'request' из неопределенного

Вызов выполняется внутри ловушки ngAfterViewInit ().

Я также пытался внедрить HttpClient на страницу, где находится "WebApiConnector. Клиент "вводится для выполнения вручную запроса к серверу, но он отлично работает.

Это конфигурация сервисного модуля

import { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';

@Injectable({
    providedIn: 'root'
})
export class Client {
    private http: HttpClient;
    private baseUrl: string;
    protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;

    constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {
        this.http = http;
        this.baseUrl = baseUrl ? baseUrl : "/webapi_2";
    }

, и это фрагмент кода, который выдает исключение :

return this.http.request("get", url_, options_)

В чем проблема?

...