代码之家  ›  专栏  ›  技术社区  ›  Kumara

如何用运行时Json文件Angular 10替换API url

  •  0
  • Kumara  · 技术社区  · 3 年前

    目前我正在使用以下结构获取API url

    我的环境。ts

        export const environment = {
      apiUrl: 'https://12.8.0.1:8282/'
    
    };
    

    我正在尝试在运行时使用APIRL。我正确地执行了该实现。

    配置。服务

        import { HttpClient } from '@angular/common/http';
    import { Injectable } from '@angular/core';
    
    @Injectable( )
    export class ConfigService {
    private appConfig;
      constructor(private http: HttpClient) { }
    
      loadConfig(){
      return this.http.get('./assets/config.json')
      .toPromise()
      .then(res =>{
        this.appConfig = res;
        console.log(res);
      });
      }
      getConfig(){
        return this.appConfig;
      }
    }
    

    应用程序模块

    import { APP_INITIALIZER, NgModule } from '@angular/core';
    import { CommonModule } from '@angular/common';
    import { BrowserModule } from '@angular/platform-browser';
    import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
    import { HttpClient, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
    import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
    import { TranslateHttpLoader } from '@ngx-translate/http-loader';
    import { AppComponent } from './app.component';
    import { AppRoutingModule } from './app-routing.module';
    import { AuthGuard } from './auth.guard';
    import { NgSelectModule } from '@ng-select/ng-select';
    import { ConfigService } from './config.service';
    //import {EndDateValidatorDirective} from '../app/layout/admin/holidays/EndDateValidatorDirective'
    export const createTranslateLoader = (http: HttpClient) => {
    
      return new TranslateHttpLoader(http, './assets/i18n/', '.json');
    };
    const appConfig = (config: ConfigService) =>{
      return() =>{
       return config.loadConfig();
      }
      
      }
    @NgModule({
      declarations: [
        AppComponent, 
      ],
      imports: [
        [
          CommonModule,
          BrowserModule,
          BrowserAnimationsModule,
          HttpClientModule, NgSelectModule,
          TranslateModule.forRoot({
            loader: {
              provide: TranslateLoader,
              useFactory: createTranslateLoader,
              deps: [HttpClient]
            }
          }),
          AppRoutingModule
    
    
        ]
      ],
      providers: [ConfigService,{
        provide:APP_INITIALIZER,
        useFactory:appConfig,
        multi: true,
        deps:[ConfigService]
      },AuthGuard],
      bootstrap: [AppComponent]
    })
    export class AppModule { }
    

    我负责这个项目,效果很好。我的函数在运行时成功执行。

    enter image description here

    现在我需要使用这个配置。json文件(位于资产文件夹内)并获取该APIRL。我是怎么做的

    0 回复  |  直到 3 年前