diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java index 0d681fdc030a..4ad14121fa5b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java @@ -589,6 +589,15 @@ private boolean markHttpResource(CodegenOperation op, Set nicknames) { return true; } + @Override + public Map postProcessSupportingFileData(Map objs) { + // supporting files bundle puts server URL over additionalProperties, keep user supplied basePath + if (additionalProperties.containsKey("basePath")) { + objs.put("basePath", additionalProperties.get("basePath")); + } + return super.postProcessSupportingFileData(objs); + } + @Override public ModelsMap postProcessModels(ModelsMap objs) { ModelsMap result = super.postProcessModels(objs); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java index dbece37188b2..64e0c3411a32 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptangular/TypeScriptAngularClientCodegenTest.java @@ -453,6 +453,22 @@ public void testBasePath() throws IOException { assertThat(fileContents).containsOnlyOnce("basePath = '/relative/url'"); } + @Test + public void testBasePathFromAdditionalProperties() throws IOException { + for (String basePath : new String[]{"", "/api"}) { + File output = Files.createTempDirectory("angular-base-path").toFile(); + output.deleteOnExit(); + CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("typescript-angular") + .setInputSpec("src/test/resources/3_0/typescript-angular/issue_20760.yaml") + .setOutputDir(output.getAbsolutePath()) + .addAdditionalProperty("basePath", basePath); + new DefaultGenerator().opts(configurator.toClientOptInput()).generate(); + String baseService = Files.readString(output.toPath().resolve("api.base.service.ts")); + assertThat(baseService).containsOnlyOnce("protected basePath = '" + basePath + "';"); + } + } + @Test public void testEnumAsConst() throws IOException { // GIVEN