Я автоматически сгенерировал сервисный модуль 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_)
В чем проблема?