0

我已经使用 NSwagStudio 自动生成了一个 WebAPI 服务模块,以将我的 Ionic/Angular 应用程序和我的 web 服务连接在一起。此服务 (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

注入 WebAPI 服务的 HttpClient 似乎未定义,因为在执行第一次调用时,应用程序陷入此异常:

未捕获(承诺):TypeError:无法读取未定义的属性“请求”

调用在 ngAfterViewInit() 钩子内部执行。

我还尝试将 HttpClient 注入到注入“WebApiConnector.Client”的页面中,以手动执行对服务器的请求,但效果很好。

这是服务模块配置

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_)

问题出在哪里?

4

0 回答 0