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 f7c1501e8817..4e651a3b921c 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 @@ -176,12 +176,27 @@ public String getHelp() { @Override public void processOpts() { super.processOpts(); + + // determine NG version + SemVer ngVersion; + if (additionalProperties.containsKey(NG_VERSION)) { + ngVersion = new SemVer(additionalProperties.get(NG_VERSION).toString()); + } else { + ngVersion = new SemVer(this.ngVersion); + LOGGER.info("generating code for Angular {} ...", ngVersion); + LOGGER.info(" (you can select the angular version by setting the additionalProperties (--additional-properties in CLI) ngVersion)"); + } + boolean ngVersionAtLeast_17 = ngVersion.atLeast("17.0.0"); + supportingFiles.add( new SupportingFile("models.mustache", modelPackage().replace('.', File.separatorChar), "models.ts")); supportingFiles .add(new SupportingFile("apis.mustache", apiPackage().replace('.', File.separatorChar), "api.ts")); supportingFiles.add(new SupportingFile("index.mustache", getIndexDirectory(), "index.ts")); supportingFiles.add(new SupportingFile("api.module.mustache", getIndexDirectory(), "api.module.ts")); + if (ngVersionAtLeast_17) { + supportingFiles.add(new SupportingFile("provide-api.mustache", getIndexDirectory(), "provide-api.ts")); + } supportingFiles.add(new SupportingFile("configuration.mustache", getIndexDirectory(), "configuration.ts")); supportingFiles.add(new SupportingFile("api.base.service.mustache", getIndexDirectory(), "api.base.service.ts")); supportingFiles.add(new SupportingFile("variables.mustache", getIndexDirectory(), "variables.ts")); @@ -191,16 +206,6 @@ public void processOpts() { supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh")); supportingFiles.add(new SupportingFile("README.mustache", getIndexDirectory(), "README.md")); - // determine NG version - SemVer ngVersion; - if (additionalProperties.containsKey(NG_VERSION)) { - ngVersion = new SemVer(additionalProperties.get(NG_VERSION).toString()); - } else { - ngVersion = new SemVer(this.ngVersion); - LOGGER.info("generating code for Angular {} ...", ngVersion); - LOGGER.info(" (you can select the angular version by setting the additionalProperties (--additional-properties in CLI) ngVersion)"); - } - if (!ngVersion.atLeast("9.0.0")) { throw new IllegalArgumentException("Invalid ngVersion: " + ngVersion + ". Only Angular v9+ is supported."); } @@ -250,6 +255,7 @@ public void processOpts() { } additionalProperties.put(NG_VERSION, ngVersion); + additionalProperties.put("ngVersionAtLeast_17", ngVersionAtLeast_17); if (additionalProperties.containsKey(API_MODULE_PREFIX)) { String apiModulePrefix = additionalProperties.get(API_MODULE_PREFIX).toString(); diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/README.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/README.mustache index 66f0c21629de..afe430da51ce 100644 --- a/modules/openapi-generator/src/main/resources/typescript-angular/README.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-angular/README.mustache @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { {{apiModuleClassName}} } from '{{npmName}}'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - {{apiModuleClassName}}, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { {{apiModuleClassName}}, {{configurationClassName}}, {{configurationParametersInterfaceName}} } from '{{npmName}}'; - -export function apiConfigFactory (): {{configurationClassName}} { - const params: {{configurationParametersInterfaceName}} = { - // set configuration parameters here. - } - return new {{configurationClassName}}(params); -} - -@NgModule({ - imports: [ {{apiModuleClassName}}.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from '{{npmName}}'; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { {{apiModuleClassName}}, {{configurationClassName}} } from '{{npmName}}'; - -@NgModule({ - imports: [ {{apiModuleClassName}} ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: {{configurationClassName}}, - useFactory: (authService: AuthService) => new {{configurationClassName}}( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from '{{npmName}}'; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { {{apiModuleClassName}} } from '{{npmName}}'; ``` -Note: The {{apiModuleClassName}} is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / {{apiModuleClassName}}s - -In order to use multiple `{{apiModuleClassName}}s` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { {{apiModuleClassName}} } from 'my-api-path'; -import { {{apiModuleClassName}} as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - {{apiModuleClassName}}, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from '{{npmName}}'; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from '{{npmName}}'; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from '{{npmName}}'; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from '{{npmName}}'; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, {{configurationClassName}} } from '{{npmName}}'; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: {{configurationClassName}}, + useFactory: (authService: AuthService) => new {{configurationClassName}}({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from '{{npmName}}'; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/index.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/index.mustache index 4db17c2d10c8..b58aade26080 100644 --- a/modules/openapi-generator/src/main/resources/typescript-angular/index.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-angular/index.mustache @@ -5,4 +5,7 @@ export * from './model/models'; export * from './variables'; export * from './configuration'; export * from './api.module'; +{{#ngVersionAtLeast_17}} +export * from './provide-api'; +{{/ngVersionAtLeast_17}} export * from './param'; diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/provide-api.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/provide-api.mustache new file mode 100644 index 000000000000..758b5b75208b --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-angular/provide-api.mustache @@ -0,0 +1,14 @@ +import { makeEnvironmentProviders } from "@angular/core"; +import { {{configurationClassName}}, {{configurationParametersInterfaceName}} } from './configuration'; +import { BASE_PATH } from './variables'; + +export function provideApi(configOrBasePath: string | {{configurationParametersInterfaceName}}) { + return makeEnvironmentProviders([ + typeof configOrBasePath === "string" + ? { provide: BASE_PATH, useValue: configOrBasePath } + : { + provide: {{configurationClassName}}, + useValue: new {{configurationClassName}}({ ...configOrBasePath }), + }, + ]); +} \ No newline at end of file diff --git a/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/.openapi-generator/FILES b/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/.openapi-generator/FILES index 7115f7f67a88..e81f08a6e52a 100644 --- a/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/.openapi-generator/FILES +++ b/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/.openapi-generator/FILES @@ -21,4 +21,5 @@ model/petWithMappedDiscriminator.ts model/petWithSimpleDiscriminator.ts model/petWithoutDiscriminator.ts param.ts +provide-api.ts variables.ts diff --git a/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/README.md b/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/README.md index 459f049d0d86..c2ba935ae173 100644 --- a/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/README.md +++ b/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/index.ts b/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/index.ts index 104dd3d21e35..02cb7d437fbf 100644 --- a/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/index.ts +++ b/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/index.ts @@ -3,4 +3,5 @@ export * from './model/models'; export * from './variables'; export * from './configuration'; export * from './api.module'; +export * from './provide-api'; export * from './param'; diff --git a/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/provide-api.ts b/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/provide-api.ts new file mode 100644 index 000000000000..5f9a3c7900ef --- /dev/null +++ b/samples/client/others/typescript-angular/builds/composed-schemas-tagged-unions/provide-api.ts @@ -0,0 +1,14 @@ +import { makeEnvironmentProviders } from "@angular/core"; +import { Configuration, ConfigurationParameters } from './configuration'; +import { BASE_PATH } from './variables'; + +export function provideApi(configOrBasePath: string | ConfigurationParameters) { + return makeEnvironmentProviders([ + typeof configOrBasePath === "string" + ? { provide: BASE_PATH, useValue: configOrBasePath } + : { + provide: Configuration, + useValue: new Configuration({ ...configOrBasePath }), + }, + ]); +} \ No newline at end of file diff --git a/samples/client/others/typescript-angular/builds/composed-schemas/.openapi-generator/FILES b/samples/client/others/typescript-angular/builds/composed-schemas/.openapi-generator/FILES index 7115f7f67a88..e81f08a6e52a 100644 --- a/samples/client/others/typescript-angular/builds/composed-schemas/.openapi-generator/FILES +++ b/samples/client/others/typescript-angular/builds/composed-schemas/.openapi-generator/FILES @@ -21,4 +21,5 @@ model/petWithMappedDiscriminator.ts model/petWithSimpleDiscriminator.ts model/petWithoutDiscriminator.ts param.ts +provide-api.ts variables.ts diff --git a/samples/client/others/typescript-angular/builds/composed-schemas/README.md b/samples/client/others/typescript-angular/builds/composed-schemas/README.md index 459f049d0d86..c2ba935ae173 100644 --- a/samples/client/others/typescript-angular/builds/composed-schemas/README.md +++ b/samples/client/others/typescript-angular/builds/composed-schemas/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/others/typescript-angular/builds/composed-schemas/index.ts b/samples/client/others/typescript-angular/builds/composed-schemas/index.ts index 104dd3d21e35..02cb7d437fbf 100644 --- a/samples/client/others/typescript-angular/builds/composed-schemas/index.ts +++ b/samples/client/others/typescript-angular/builds/composed-schemas/index.ts @@ -3,4 +3,5 @@ export * from './model/models'; export * from './variables'; export * from './configuration'; export * from './api.module'; +export * from './provide-api'; export * from './param'; diff --git a/samples/client/others/typescript-angular/builds/composed-schemas/provide-api.ts b/samples/client/others/typescript-angular/builds/composed-schemas/provide-api.ts new file mode 100644 index 000000000000..5f9a3c7900ef --- /dev/null +++ b/samples/client/others/typescript-angular/builds/composed-schemas/provide-api.ts @@ -0,0 +1,14 @@ +import { makeEnvironmentProviders } from "@angular/core"; +import { Configuration, ConfigurationParameters } from './configuration'; +import { BASE_PATH } from './variables'; + +export function provideApi(configOrBasePath: string | ConfigurationParameters) { + return makeEnvironmentProviders([ + typeof configOrBasePath === "string" + ? { provide: BASE_PATH, useValue: configOrBasePath } + : { + provide: Configuration, + useValue: new Configuration({ ...configOrBasePath }), + }, + ]); +} \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v12-oneOf/builds/default/README.md b/samples/client/petstore/typescript-angular-v12-oneOf/builds/default/README.md index 7eca7931bc24..0bd38bf8b92f 100644 --- a/samples/client/petstore/typescript-angular-v12-oneOf/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v12-oneOf/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default/README.md b/samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default/README.md index 6653fc45df74..dbc94fd09277 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/README.md index 6653fc45df74..dbc94fd09277 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/README.md b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/README.md index 3fb46b154060..a26e1241f023 100644 --- a/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/README.md +++ b/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from '@openapitools/typescript-angular-petstore'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from '@openapitools/typescript-angular-petstore'; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from '@openapitools/typescript-angular-petstore'; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from '@openapitools/typescript-angular-petstore'; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from '@openapitools/typescript-angular-petstore'; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from '@openapitools/typescript-angular-petstore'; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from '@openapitools/typescript-angular-petstore'; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from '@openapitools/typescript-angular-petstore'; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from '@openapitools/typescript-angular-petstore'; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from '@openapitools/typescript-angular-petstore'; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from '@openapitools/typescript-angular-petstore'; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from '@openapitools/typescript-angular-petstore'; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v13-oneOf/builds/default/README.md b/samples/client/petstore/typescript-angular-v13-oneOf/builds/default/README.md index 7eca7931bc24..0bd38bf8b92f 100644 --- a/samples/client/petstore/typescript-angular-v13-oneOf/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v13-oneOf/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default/README.md b/samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default/README.md index 6653fc45df74..dbc94fd09277 100644 --- a/samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/default/README.md index 6653fc45df74..dbc94fd09277 100644 --- a/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/with-npm/README.md b/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/with-npm/README.md index 3fb46b154060..a26e1241f023 100644 --- a/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/with-npm/README.md +++ b/samples/client/petstore/typescript-angular-v13-provided-in-root/builds/with-npm/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from '@openapitools/typescript-angular-petstore'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from '@openapitools/typescript-angular-petstore'; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from '@openapitools/typescript-angular-petstore'; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from '@openapitools/typescript-angular-petstore'; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from '@openapitools/typescript-angular-petstore'; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from '@openapitools/typescript-angular-petstore'; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from '@openapitools/typescript-angular-petstore'; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from '@openapitools/typescript-angular-petstore'; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from '@openapitools/typescript-angular-petstore'; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from '@openapitools/typescript-angular-petstore'; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from '@openapitools/typescript-angular-petstore'; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from '@openapitools/typescript-angular-petstore'; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v14-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v14-provided-in-root/builds/default/README.md index 6653fc45df74..dbc94fd09277 100644 --- a/samples/client/petstore/typescript-angular-v14-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v14-provided-in-root/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v14-query-param-object-format/README.md b/samples/client/petstore/typescript-angular-v14-query-param-object-format/README.md index 6653fc45df74..dbc94fd09277 100644 --- a/samples/client/petstore/typescript-angular-v14-query-param-object-format/README.md +++ b/samples/client/petstore/typescript-angular-v14-query-param-object-format/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v15-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v15-provided-in-root/builds/default/README.md index 6653fc45df74..dbc94fd09277 100644 --- a/samples/client/petstore/typescript-angular-v15-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v15-provided-in-root/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v16-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v16-provided-in-root/builds/default/README.md index 6653fc45df74..dbc94fd09277 100644 --- a/samples/client/petstore/typescript-angular-v16-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v16-provided-in-root/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/.openapi-generator/FILES b/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/.openapi-generator/FILES index 6cf79a289c8f..45b94aafea33 100644 --- a/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/.openapi-generator/FILES +++ b/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/.openapi-generator/FILES @@ -18,4 +18,5 @@ model/pet.ts model/tag.ts model/user.ts param.ts +provide-api.ts variables.ts diff --git a/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/README.md index 6653fc45df74..dbc94fd09277 100644 --- a/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/index.ts b/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/index.ts index 104dd3d21e35..02cb7d437fbf 100644 --- a/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/index.ts +++ b/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/index.ts @@ -3,4 +3,5 @@ export * from './model/models'; export * from './variables'; export * from './configuration'; export * from './api.module'; +export * from './provide-api'; export * from './param'; diff --git a/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/provide-api.ts b/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/provide-api.ts new file mode 100644 index 000000000000..5f9a3c7900ef --- /dev/null +++ b/samples/client/petstore/typescript-angular-v17-provided-in-root/builds/default/provide-api.ts @@ -0,0 +1,14 @@ +import { makeEnvironmentProviders } from "@angular/core"; +import { Configuration, ConfigurationParameters } from './configuration'; +import { BASE_PATH } from './variables'; + +export function provideApi(configOrBasePath: string | ConfigurationParameters) { + return makeEnvironmentProviders([ + typeof configOrBasePath === "string" + ? { provide: BASE_PATH, useValue: configOrBasePath } + : { + provide: Configuration, + useValue: new Configuration({ ...configOrBasePath }), + }, + ]); +} \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/.openapi-generator/FILES b/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/.openapi-generator/FILES index 6cf79a289c8f..45b94aafea33 100644 --- a/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/.openapi-generator/FILES +++ b/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/.openapi-generator/FILES @@ -18,4 +18,5 @@ model/pet.ts model/tag.ts model/user.ts param.ts +provide-api.ts variables.ts diff --git a/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/README.md b/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/README.md index 6653fc45df74..dbc94fd09277 100644 --- a/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from ''; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from ''; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from ''; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from ''; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from ''; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from ''; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from ''; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from ''; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from ''; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from ''; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/index.ts b/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/index.ts index 104dd3d21e35..02cb7d437fbf 100644 --- a/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/index.ts +++ b/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/index.ts @@ -3,4 +3,5 @@ export * from './model/models'; export * from './variables'; export * from './configuration'; export * from './api.module'; +export * from './provide-api'; export * from './param'; diff --git a/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/provide-api.ts b/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/provide-api.ts new file mode 100644 index 000000000000..5f9a3c7900ef --- /dev/null +++ b/samples/client/petstore/typescript-angular-v18-provided-in-root/builds/default/provide-api.ts @@ -0,0 +1,14 @@ +import { makeEnvironmentProviders } from "@angular/core"; +import { Configuration, ConfigurationParameters } from './configuration'; +import { BASE_PATH } from './variables'; + +export function provideApi(configOrBasePath: string | ConfigurationParameters) { + return makeEnvironmentProviders([ + typeof configOrBasePath === "string" + ? { provide: BASE_PATH, useValue: configOrBasePath } + : { + provide: Configuration, + useValue: new Configuration({ ...configOrBasePath }), + }, + ]); +} \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/.openapi-generator/FILES b/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/.openapi-generator/FILES index d1d45deee73f..28bd61f23d5c 100644 --- a/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/.openapi-generator/FILES +++ b/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/.openapi-generator/FILES @@ -20,5 +20,6 @@ model/user.ts ng-package.json package.json param.ts +provide-api.ts tsconfig.json variables.ts diff --git a/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/README.md b/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/README.md index 67f609707e30..92fc8cb8eba8 100644 --- a/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from 'sample-angular-19-0-0-with-angular-dependency-params'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from 'sample-angular-19-0-0-with-angular-dependency-params'; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from 'sample-angular-19-0-0-with-angular-dependency-params'; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from 'sample-angular-19-0-0-with-angular-dependency-params'; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from 'sample-angular-19-0-0-with-angular-dependency-params'; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from 'sample-angular-19-0-0-with-angular-dependency-params'; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from 'sample-angular-19-0-0-with-angular-dependency-params'; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from 'sample-angular-19-0-0-with-angular-dependency-params'; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from 'sample-angular-19-0-0-with-angular-dependency-params'; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from 'sample-angular-19-0-0-with-angular-dependency-params'; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from 'sample-angular-19-0-0-with-angular-dependency-params'; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from 'sample-angular-19-0-0-with-angular-dependency-params'; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/index.ts b/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/index.ts index 104dd3d21e35..02cb7d437fbf 100644 --- a/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/index.ts +++ b/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/index.ts @@ -3,4 +3,5 @@ export * from './model/models'; export * from './variables'; export * from './configuration'; export * from './api.module'; +export * from './provide-api'; export * from './param'; diff --git a/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/provide-api.ts b/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/provide-api.ts new file mode 100644 index 000000000000..5f9a3c7900ef --- /dev/null +++ b/samples/client/petstore/typescript-angular-v19-with-angular-dependency-params/builds/default/provide-api.ts @@ -0,0 +1,14 @@ +import { makeEnvironmentProviders } from "@angular/core"; +import { Configuration, ConfigurationParameters } from './configuration'; +import { BASE_PATH } from './variables'; + +export function provideApi(configOrBasePath: string | ConfigurationParameters) { + return makeEnvironmentProviders([ + typeof configOrBasePath === "string" + ? { provide: BASE_PATH, useValue: configOrBasePath } + : { + provide: Configuration, + useValue: new Configuration({ ...configOrBasePath }), + }, + ]); +} \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v19/builds/default/.openapi-generator/FILES b/samples/client/petstore/typescript-angular-v19/builds/default/.openapi-generator/FILES index d1d45deee73f..28bd61f23d5c 100644 --- a/samples/client/petstore/typescript-angular-v19/builds/default/.openapi-generator/FILES +++ b/samples/client/petstore/typescript-angular-v19/builds/default/.openapi-generator/FILES @@ -20,5 +20,6 @@ model/user.ts ng-package.json package.json param.ts +provide-api.ts tsconfig.json variables.ts diff --git a/samples/client/petstore/typescript-angular-v19/builds/default/README.md b/samples/client/petstore/typescript-angular-v19/builds/default/README.md index 5a836f509281..2aedaf8b75cf 100644 --- a/samples/client/petstore/typescript-angular-v19/builds/default/README.md +++ b/samples/client/petstore/typescript-angular-v19/builds/default/README.md @@ -58,157 +58,106 @@ Published packages are not effected by this issue. In your Angular project: ```typescript -// without configuring providers -import { ApiModule } from 'sample-angular-19-0-0'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` -```typescript -// configuring providers -import { ApiModule, Configuration, ConfigurationParameters } from 'sample-angular-19-0-0'; - -export function apiConfigFactory (): Configuration { - const params: ConfigurationParameters = { - // set configuration parameters here. - } - return new Configuration(params); -} - -@NgModule({ - imports: [ ApiModule.forRoot(apiConfigFactory) ], - declarations: [ AppComponent ], - providers: [], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from 'sample-angular-19-0-0'; -```typescript -// configuring providers with an authentication service that manages your access tokens -import { ApiModule, Configuration } from 'sample-angular-19-0-0'; - -@NgModule({ - imports: [ ApiModule ], - declarations: [ AppComponent ], +export const appConfig: ApplicationConfig = { providers: [ - { - provide: Configuration, - useFactory: (authService: AuthService) => new Configuration( - { - basePath: environment.apiUrl, - accessToken: authService.getAccessToken.bind(authService) - } - ), - deps: [AuthService], - multi: false - } + // ... + provideHttpClient(), + provideApi() ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} +}; ``` +**NOTE** +If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript -import { DefaultApi } from 'sample-angular-19-0-0'; - -export class AppComponent { - constructor(private apiGateway: DefaultApi) { } -} +import { ApiModule } from 'sample-angular-19-0-0'; ``` -Note: The ApiModule is restricted to being instantiated once app wide. -This is to ensure that all services are treated as singletons. - -### Using multiple OpenAPI files / APIs / ApiModules - -In order to use multiple `ApiModules` generated from different OpenAPI files, -you can create an alias name when importing the modules -in order to avoid naming conflicts: +If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript -import { ApiModule } from 'my-api-path'; -import { ApiModule as OtherApiModule } from 'my-other-api-path'; -import { HttpClientModule } from '@angular/common/http'; - -@NgModule({ - imports: [ - ApiModule, - OtherApiModule, - // make sure to import the HttpClientModule in the AppModule only, - // see https://github.com/angular/angular/issues/20575 - HttpClientModule - ] -}) -export class AppModule { +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from 'sample-angular-19-0-0'; -} +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi('http://localhost:9999') + ], +}; ``` -### Set service base path - -If different than the generated base path, during app bootstrap, you can provide the base path to your service. - ```typescript -import { BASE_PATH } from 'sample-angular-19-0-0'; +// with a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi } from 'sample-angular-19-0-0'; -bootstrap(AppComponent, [ - { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, -]); +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideApi({ + withCredentials: true, + username: 'user', + password: 'password' + }) + ], +}; ``` -or - ```typescript -import { BASE_PATH } from 'sample-angular-19-0-0'; - -@NgModule({ - imports: [], - declarations: [ AppComponent ], - providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], - bootstrap: [ AppComponent ] -}) -export class AppModule {} -``` - -### Using @angular/cli - -First extend your `src/environments/*.ts` files by adding the corresponding base path: +// with factory building a custom configuration +import { ApplicationConfig } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; +import { provideApi, Configuration } from 'sample-angular-19-0-0'; -```typescript -export const environment = { - production: false, - API_BASE_PATH: 'http://127.0.0.1:8080' +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration({ + basePath: 'http://localhost:9999', + withCredentials: true, + username: authService.getUsername(), + password: authService.getPassword(), + }), + deps: [AuthService], + multi: false + } + ], }; ``` -In the src/app/app.module.ts: +### Using multiple OpenAPI files / APIs + +In order to use multiple APIs generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: ```typescript -import { BASE_PATH } from 'sample-angular-19-0-0'; +import { provideApi as provideUserApi } from 'my-user-api-path'; +import { provideApi as provideAdminApi } from 'my-admin-api-path'; +import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ ], - providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], - bootstrap: [ AppComponent ] -}) -export class AppModule { } +export const appConfig: ApplicationConfig = { + providers: [ + // ... + provideHttpClient(), + provideUserApi(environment.basePath), + provideAdminApi(environment.basePath), + ], +}; ``` ### Customizing path parameter encoding diff --git a/samples/client/petstore/typescript-angular-v19/builds/default/index.ts b/samples/client/petstore/typescript-angular-v19/builds/default/index.ts index 104dd3d21e35..02cb7d437fbf 100644 --- a/samples/client/petstore/typescript-angular-v19/builds/default/index.ts +++ b/samples/client/petstore/typescript-angular-v19/builds/default/index.ts @@ -3,4 +3,5 @@ export * from './model/models'; export * from './variables'; export * from './configuration'; export * from './api.module'; +export * from './provide-api'; export * from './param'; diff --git a/samples/client/petstore/typescript-angular-v19/builds/default/provide-api.ts b/samples/client/petstore/typescript-angular-v19/builds/default/provide-api.ts new file mode 100644 index 000000000000..5f9a3c7900ef --- /dev/null +++ b/samples/client/petstore/typescript-angular-v19/builds/default/provide-api.ts @@ -0,0 +1,14 @@ +import { makeEnvironmentProviders } from "@angular/core"; +import { Configuration, ConfigurationParameters } from './configuration'; +import { BASE_PATH } from './variables'; + +export function provideApi(configOrBasePath: string | ConfigurationParameters) { + return makeEnvironmentProviders([ + typeof configOrBasePath === "string" + ? { provide: BASE_PATH, useValue: configOrBasePath } + : { + provide: Configuration, + useValue: new Configuration({ ...configOrBasePath }), + }, + ]); +} \ No newline at end of file