mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-05-12 20:50:55 +00:00
[Feature][Angular] improve docs angular import (#7363)
* #7354: improve docs about importing multiple ApiModules, prevent https://github.com/angular/angular/issues/20575#issuecomment-356261374 * #7354: prevent https://github.com/angular/angular/issues/20575#issuecomment-356261374 add error message about importing the HttpModule / HttpClientModule * #7354: generate sample files * #7354: generate README.md also for non-npm packages
This commit is contained in:
parent
197b4481ef
commit
ef832e7157
@ -93,6 +93,7 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode
|
|||||||
supportingFiles.add(new SupportingFile("encoder.mustache", getIndexDirectory(), "encoder.ts"));
|
supportingFiles.add(new SupportingFile("encoder.mustache", getIndexDirectory(), "encoder.ts"));
|
||||||
supportingFiles.add(new SupportingFile("gitignore", "", ".gitignore"));
|
supportingFiles.add(new SupportingFile("gitignore", "", ".gitignore"));
|
||||||
supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh"));
|
supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh"));
|
||||||
|
supportingFiles.add(new SupportingFile("README.mustache", getIndexDirectory(), "README.md"));
|
||||||
|
|
||||||
if (additionalProperties.containsKey(NPM_NAME)) {
|
if (additionalProperties.containsKey(NPM_NAME)) {
|
||||||
addNpmPackageGeneration();
|
addNpmPackageGeneration();
|
||||||
@ -143,7 +144,6 @@ public class TypeScriptAngularClientCodegen extends AbstractTypeScriptClientCode
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Files for building our lib
|
//Files for building our lib
|
||||||
supportingFiles.add(new SupportingFile("README.mustache", getIndexDirectory(), "README.md"));
|
|
||||||
supportingFiles.add(new SupportingFile("package.mustache", getIndexDirectory(), "package.json"));
|
supportingFiles.add(new SupportingFile("package.mustache", getIndexDirectory(), "package.json"));
|
||||||
supportingFiles.add(new SupportingFile("typings.mustache", getIndexDirectory(), "typings.json"));
|
supportingFiles.add(new SupportingFile("typings.mustache", getIndexDirectory(), "typings.json"));
|
||||||
supportingFiles.add(new SupportingFile("tsconfig.mustache", getIndexDirectory(), "tsconfig.json"));
|
supportingFiles.add(new SupportingFile("tsconfig.mustache", getIndexDirectory(), "tsconfig.json"));
|
||||||
|
@ -46,9 +46,16 @@ In your Angular project:
|
|||||||
```
|
```
|
||||||
// without configuring providers
|
// without configuring providers
|
||||||
import { ApiModule } from '{{npmName}}';
|
import { ApiModule } from '{{npmName}}';
|
||||||
|
{{#useHttpClient}}import { HttpClientModule } from '@angular/common/http';{{/useHttpClient}}
|
||||||
|
{{^useHttpClient}}import { HttpModule } from '@angular/http';{{/useHttpClient}}
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [ ApiModule ],
|
imports: [
|
||||||
|
ApiModule,
|
||||||
|
{{#useHttpClient}}// make sure to import the HttpClientModule in the AppModule only,
|
||||||
|
// see https://github.com/angular/angular/issues/20575
|
||||||
|
HttpClientModule{{/useHttpClient}}{{^useHttpClient}}HttpModule{{/useHttpClient}}
|
||||||
|
],
|
||||||
declarations: [ AppComponent ],
|
declarations: [ AppComponent ],
|
||||||
providers: [],
|
providers: [],
|
||||||
bootstrap: [ AppComponent ]
|
bootstrap: [ AppComponent ]
|
||||||
@ -87,6 +94,31 @@ export class AppComponent {
|
|||||||
Note: The ApiModule is restricted to being instantiated once app wide.
|
Note: The ApiModule is restricted to being instantiated once app wide.
|
||||||
This is to ensure that all services are treated as singletons.
|
This is to ensure that all services are treated as singletons.
|
||||||
|
|
||||||
|
#### Using multiple swagger files / APIs / ApiModules
|
||||||
|
In order to use multiple `ApiModules` generated from different swagger files,
|
||||||
|
you can create an alias name when importing the modules
|
||||||
|
in order to avoid naming conflicts:
|
||||||
|
```
|
||||||
|
import { ApiModule } from 'my-api-path';
|
||||||
|
import { ApiModule as OtherApiModule } from 'my-other-api-path';
|
||||||
|
{{#useHttpClient}}import { HttpClientModule } from '@angular/common/http';{{/useHttpClient}}
|
||||||
|
{{^useHttpClient}}import { HttpModule } from '@angular/http';{{/useHttpClient}}
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
ApiModule,
|
||||||
|
OtherApiModule,
|
||||||
|
{{#useHttpClient}}// make sure to import the HttpClientModule in the AppModule only,
|
||||||
|
// see https://github.com/angular/angular/issues/20575
|
||||||
|
HttpClientModule{{/useHttpClient}}{{^useHttpClient}}HttpModule{{/useHttpClient}}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class AppModule {
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Set service base path
|
### Set service base path
|
||||||
If different than the generated base path, during app bootstrap, you can provide the base path to your service.
|
If different than the generated base path, during app bootstrap, you can provide the base path to your service.
|
||||||
|
|
||||||
|
@ -1,12 +1,7 @@
|
|||||||
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
{{#useHttpClient}}
|
|
||||||
import { HttpClientModule } from '@angular/common/http';
|
|
||||||
{{/useHttpClient}}
|
|
||||||
{{^useHttpClient}}
|
|
||||||
import { HttpModule } from '@angular/http';
|
|
||||||
{{/useHttpClient}}
|
|
||||||
import { Configuration } from './configuration';
|
import { Configuration } from './configuration';
|
||||||
|
{{#useHttpClient}}import { HttpClient } from '@angular/common/http';{{/useHttpClient}}
|
||||||
|
{{^useHttpClient}}import { Http } from '@angular/http';{{/useHttpClient}}
|
||||||
|
|
||||||
{{#apiInfo}}
|
{{#apiInfo}}
|
||||||
{{#apis}}
|
{{#apis}}
|
||||||
@ -15,7 +10,7 @@ import { {{classname}} } from './{{importPath}}';
|
|||||||
{{/apiInfo}}
|
{{/apiInfo}}
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [ CommonModule, {{#useHttpClient}}HttpClientModule{{/useHttpClient}}{{^useHttpClient}}HttpModule{{/useHttpClient}} ],
|
imports: [],
|
||||||
declarations: [],
|
declarations: [],
|
||||||
exports: [],
|
exports: [],
|
||||||
providers: [
|
providers: [
|
||||||
@ -30,9 +25,14 @@ export class ApiModule {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor( @Optional() @SkipSelf() parentModule: ApiModule) {
|
constructor( @Optional() @SkipSelf() parentModule: ApiModule,
|
||||||
|
@Optional() http: {{#useHttpClient}}HttpClient{{/useHttpClient}}{{^useHttpClient}}Http{{/useHttpClient}}) {
|
||||||
if (parentModule) {
|
if (parentModule) {
|
||||||
throw new Error('ApiModule is already loaded. Import your base AppModule only.');
|
throw new Error('ApiModule is already loaded. Import in your base AppModule only.');
|
||||||
|
}
|
||||||
|
if (!http) {
|
||||||
|
throw new Error('You need to import the {{#useHttpClient}}HttpClientModule{{/useHttpClient}}{{^useHttpClient}}HttpModule{{/useHttpClient}} in your AppModule! \n' +
|
||||||
|
'See also https://github.com/angular/angular/issues/20575');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
2.3.0
|
2.3.1-SNAPSHOT
|
167
samples/client/petstore/typescript-angular-v2/default/README.md
Normal file
167
samples/client/petstore/typescript-angular-v2/default/README.md
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
## @
|
||||||
|
|
||||||
|
### Building
|
||||||
|
|
||||||
|
To build an compile the typescript sources to javascript use:
|
||||||
|
```
|
||||||
|
npm install
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
### publishing
|
||||||
|
|
||||||
|
First build the package than run ```npm publish```
|
||||||
|
|
||||||
|
### consuming
|
||||||
|
|
||||||
|
navigate to the folder of your consuming project and run one of next commando's.
|
||||||
|
|
||||||
|
_published:_
|
||||||
|
|
||||||
|
```
|
||||||
|
npm install @ --save
|
||||||
|
```
|
||||||
|
|
||||||
|
_unPublished (not recommended):_
|
||||||
|
|
||||||
|
```
|
||||||
|
npm install PATH_TO_GENERATED_PACKAGE --save
|
||||||
|
```
|
||||||
|
|
||||||
|
_using `npm link`:_
|
||||||
|
|
||||||
|
In PATH_TO_GENERATED_PACKAGE:
|
||||||
|
```
|
||||||
|
npm link
|
||||||
|
```
|
||||||
|
|
||||||
|
In your project:
|
||||||
|
```
|
||||||
|
npm link @
|
||||||
|
```
|
||||||
|
|
||||||
|
In your Angular project:
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
// without configuring providers
|
||||||
|
import { ApiModule } from '';
|
||||||
|
|
||||||
|
import { HttpModule } from '@angular/http';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
ApiModule,
|
||||||
|
HttpModule
|
||||||
|
],
|
||||||
|
declarations: [ AppComponent ],
|
||||||
|
providers: [],
|
||||||
|
bootstrap: [ AppComponent ]
|
||||||
|
})
|
||||||
|
export class AppModule {}
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
// 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 { DefaultApi } from '';
|
||||||
|
|
||||||
|
export class AppComponent {
|
||||||
|
constructor(private apiGateway: DefaultApi) { }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: The ApiModule is restricted to being instantiated once app wide.
|
||||||
|
This is to ensure that all services are treated as singletons.
|
||||||
|
|
||||||
|
#### Using multiple swagger files / APIs / ApiModules
|
||||||
|
In order to use multiple `ApiModules` generated from different swagger files,
|
||||||
|
you can create an alias name when importing the modules
|
||||||
|
in order to avoid naming conflicts:
|
||||||
|
```
|
||||||
|
import { ApiModule } from 'my-api-path';
|
||||||
|
import { ApiModule as OtherApiModule } from 'my-other-api-path';
|
||||||
|
|
||||||
|
import { HttpModule } from '@angular/http';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
ApiModule,
|
||||||
|
OtherApiModule,
|
||||||
|
HttpModule
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class AppModule {
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Set service base path
|
||||||
|
If different than the generated base path, during app bootstrap, you can provide the base path to your service.
|
||||||
|
|
||||||
|
```
|
||||||
|
import { BASE_PATH } from '';
|
||||||
|
|
||||||
|
bootstrap(AppComponent, [
|
||||||
|
{ provide: BASE_PATH, useValue: 'https://your-web-service.com' },
|
||||||
|
]);
|
||||||
|
```
|
||||||
|
or
|
||||||
|
|
||||||
|
```
|
||||||
|
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:
|
||||||
|
|
||||||
|
```
|
||||||
|
export const environment = {
|
||||||
|
production: false,
|
||||||
|
API_BASE_PATH: 'http://127.0.0.1:8080'
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
In the src/app/app.module.ts:
|
||||||
|
```
|
||||||
|
import { BASE_PATH } from '';
|
||||||
|
import { environment } from '../environments/environment';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [
|
||||||
|
AppComponent
|
||||||
|
],
|
||||||
|
imports: [ ],
|
||||||
|
providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }],
|
||||||
|
bootstrap: [ AppComponent ]
|
||||||
|
})
|
||||||
|
export class AppModule { }
|
||||||
|
```
|
@ -1,14 +1,14 @@
|
|||||||
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { HttpModule } from '@angular/http';
|
|
||||||
import { Configuration } from './configuration';
|
import { Configuration } from './configuration';
|
||||||
|
|
||||||
|
import { Http } from '@angular/http';
|
||||||
|
|
||||||
import { PetService } from './api/pet.service';
|
import { PetService } from './api/pet.service';
|
||||||
import { StoreService } from './api/store.service';
|
import { StoreService } from './api/store.service';
|
||||||
import { UserService } from './api/user.service';
|
import { UserService } from './api/user.service';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [ CommonModule, HttpModule ],
|
imports: [],
|
||||||
declarations: [],
|
declarations: [],
|
||||||
exports: [],
|
exports: [],
|
||||||
providers: [
|
providers: [
|
||||||
@ -24,9 +24,14 @@ export class ApiModule {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor( @Optional() @SkipSelf() parentModule: ApiModule) {
|
constructor( @Optional() @SkipSelf() parentModule: ApiModule,
|
||||||
|
@Optional() http: Http) {
|
||||||
if (parentModule) {
|
if (parentModule) {
|
||||||
throw new Error('ApiModule is already loaded. Import your base AppModule only.');
|
throw new Error('ApiModule is already loaded. Import in your base AppModule only.');
|
||||||
|
}
|
||||||
|
if (!http) {
|
||||||
|
throw new Error('You need to import the HttpModule in your AppModule! \n' +
|
||||||
|
'See also https://github.com/angular/angular/issues/20575');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
2.3.0
|
2.3.1-SNAPSHOT
|
@ -47,8 +47,13 @@ In your Angular project:
|
|||||||
// without configuring providers
|
// without configuring providers
|
||||||
import { ApiModule } from '@swagger/angular2-typescript-petstore';
|
import { ApiModule } from '@swagger/angular2-typescript-petstore';
|
||||||
|
|
||||||
|
import { HttpModule } from '@angular/http';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [ ApiModule ],
|
imports: [
|
||||||
|
ApiModule,
|
||||||
|
HttpModule
|
||||||
|
],
|
||||||
declarations: [ AppComponent ],
|
declarations: [ AppComponent ],
|
||||||
providers: [],
|
providers: [],
|
||||||
bootstrap: [ AppComponent ]
|
bootstrap: [ AppComponent ]
|
||||||
@ -87,6 +92,29 @@ export class AppComponent {
|
|||||||
Note: The ApiModule is restricted to being instantiated once app wide.
|
Note: The ApiModule is restricted to being instantiated once app wide.
|
||||||
This is to ensure that all services are treated as singletons.
|
This is to ensure that all services are treated as singletons.
|
||||||
|
|
||||||
|
#### Using multiple swagger files / APIs / ApiModules
|
||||||
|
In order to use multiple `ApiModules` generated from different swagger files,
|
||||||
|
you can create an alias name when importing the modules
|
||||||
|
in order to avoid naming conflicts:
|
||||||
|
```
|
||||||
|
import { ApiModule } from 'my-api-path';
|
||||||
|
import { ApiModule as OtherApiModule } from 'my-other-api-path';
|
||||||
|
|
||||||
|
import { HttpModule } from '@angular/http';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
ApiModule,
|
||||||
|
OtherApiModule,
|
||||||
|
HttpModule
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class AppModule {
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Set service base path
|
### Set service base path
|
||||||
If different than the generated base path, during app bootstrap, you can provide the base path to your service.
|
If different than the generated base path, during app bootstrap, you can provide the base path to your service.
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { HttpModule } from '@angular/http';
|
|
||||||
import { Configuration } from './configuration';
|
import { Configuration } from './configuration';
|
||||||
|
|
||||||
import { PetService } from './api/pet.service';
|
import { PetService } from './api/pet.service';
|
||||||
@ -8,7 +7,7 @@ import { StoreService } from './api/store.service';
|
|||||||
import { UserService } from './api/user.service';
|
import { UserService } from './api/user.service';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [ CommonModule, HttpModule ],
|
imports: [],
|
||||||
declarations: [],
|
declarations: [],
|
||||||
exports: [],
|
exports: [],
|
||||||
providers: [
|
providers: [
|
||||||
@ -26,7 +25,7 @@ export class ApiModule {
|
|||||||
|
|
||||||
constructor( @Optional() @SkipSelf() parentModule: ApiModule) {
|
constructor( @Optional() @SkipSelf() parentModule: ApiModule) {
|
||||||
if (parentModule) {
|
if (parentModule) {
|
||||||
throw new Error('ApiModule is already loaded. Import your base AppModule only.');
|
throw new Error('ApiModule is already loaded. Import in your base AppModule only.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
2.3.0
|
2.3.1-SNAPSHOT
|
@ -47,8 +47,13 @@ In your Angular project:
|
|||||||
// without configuring providers
|
// without configuring providers
|
||||||
import { ApiModule } from '@swagger/angular2-typescript-petstore';
|
import { ApiModule } from '@swagger/angular2-typescript-petstore';
|
||||||
|
|
||||||
|
import { HttpModule } from '@angular/http';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [ ApiModule ],
|
imports: [
|
||||||
|
ApiModule,
|
||||||
|
HttpModule
|
||||||
|
],
|
||||||
declarations: [ AppComponent ],
|
declarations: [ AppComponent ],
|
||||||
providers: [],
|
providers: [],
|
||||||
bootstrap: [ AppComponent ]
|
bootstrap: [ AppComponent ]
|
||||||
@ -87,6 +92,29 @@ export class AppComponent {
|
|||||||
Note: The ApiModule is restricted to being instantiated once app wide.
|
Note: The ApiModule is restricted to being instantiated once app wide.
|
||||||
This is to ensure that all services are treated as singletons.
|
This is to ensure that all services are treated as singletons.
|
||||||
|
|
||||||
|
#### Using multiple swagger files / APIs / ApiModules
|
||||||
|
In order to use multiple `ApiModules` generated from different swagger files,
|
||||||
|
you can create an alias name when importing the modules
|
||||||
|
in order to avoid naming conflicts:
|
||||||
|
```
|
||||||
|
import { ApiModule } from 'my-api-path';
|
||||||
|
import { ApiModule as OtherApiModule } from 'my-other-api-path';
|
||||||
|
|
||||||
|
import { HttpModule } from '@angular/http';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
ApiModule,
|
||||||
|
OtherApiModule,
|
||||||
|
HttpModule
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class AppModule {
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Set service base path
|
### Set service base path
|
||||||
If different than the generated base path, during app bootstrap, you can provide the base path to your service.
|
If different than the generated base path, during app bootstrap, you can provide the base path to your service.
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { HttpModule } from '@angular/http';
|
|
||||||
import { Configuration } from './configuration';
|
import { Configuration } from './configuration';
|
||||||
|
|
||||||
|
import { Http } from '@angular/http';
|
||||||
|
|
||||||
import { PetService } from './api/pet.service';
|
import { PetService } from './api/pet.service';
|
||||||
import { StoreService } from './api/store.service';
|
import { StoreService } from './api/store.service';
|
||||||
import { UserService } from './api/user.service';
|
import { UserService } from './api/user.service';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [ CommonModule, HttpModule ],
|
imports: [],
|
||||||
declarations: [],
|
declarations: [],
|
||||||
exports: [],
|
exports: [],
|
||||||
providers: [
|
providers: [
|
||||||
@ -24,9 +24,14 @@ export class ApiModule {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor( @Optional() @SkipSelf() parentModule: ApiModule) {
|
constructor( @Optional() @SkipSelf() parentModule: ApiModule,
|
||||||
|
@Optional() http: Http) {
|
||||||
if (parentModule) {
|
if (parentModule) {
|
||||||
throw new Error('ApiModule is already loaded. Import your base AppModule only.');
|
throw new Error('ApiModule is already loaded. Import in your base AppModule only.');
|
||||||
|
}
|
||||||
|
if (!http) {
|
||||||
|
throw new Error('You need to import the HttpModule in your AppModule! \n' +
|
||||||
|
'See also https://github.com/angular/angular/issues/20575');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
2.3.0
|
2.3.1-SNAPSHOT
|
@ -46,9 +46,16 @@ In your Angular project:
|
|||||||
```
|
```
|
||||||
// without configuring providers
|
// without configuring providers
|
||||||
import { ApiModule } from '@swagger/angular2-typescript-petstore';
|
import { ApiModule } from '@swagger/angular2-typescript-petstore';
|
||||||
|
import { HttpClientModule } from '@angular/common/http';
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [ ApiModule ],
|
imports: [
|
||||||
|
ApiModule,
|
||||||
|
// make sure to import the HttpClientModule in the AppModule only,
|
||||||
|
// see https://github.com/angular/angular/issues/20575
|
||||||
|
HttpClientModule
|
||||||
|
],
|
||||||
declarations: [ AppComponent ],
|
declarations: [ AppComponent ],
|
||||||
providers: [],
|
providers: [],
|
||||||
bootstrap: [ AppComponent ]
|
bootstrap: [ AppComponent ]
|
||||||
@ -87,6 +94,31 @@ export class AppComponent {
|
|||||||
Note: The ApiModule is restricted to being instantiated once app wide.
|
Note: The ApiModule is restricted to being instantiated once app wide.
|
||||||
This is to ensure that all services are treated as singletons.
|
This is to ensure that all services are treated as singletons.
|
||||||
|
|
||||||
|
#### Using multiple swagger files / APIs / ApiModules
|
||||||
|
In order to use multiple `ApiModules` generated from different swagger files,
|
||||||
|
you can create an alias name when importing the modules
|
||||||
|
in order to avoid naming conflicts:
|
||||||
|
```
|
||||||
|
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 {
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Set service base path
|
### Set service base path
|
||||||
If different than the generated base path, during app bootstrap, you can provide the base path to your service.
|
If different than the generated base path, during app bootstrap, you can provide the base path to your service.
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { HttpClientModule } from '@angular/common/http';
|
|
||||||
import { Configuration } from './configuration';
|
import { Configuration } from './configuration';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
|
||||||
|
|
||||||
import { PetService } from './api/pet.service';
|
import { PetService } from './api/pet.service';
|
||||||
import { StoreService } from './api/store.service';
|
import { StoreService } from './api/store.service';
|
||||||
import { UserService } from './api/user.service';
|
import { UserService } from './api/user.service';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [ CommonModule, HttpClientModule ],
|
imports: [],
|
||||||
declarations: [],
|
declarations: [],
|
||||||
exports: [],
|
exports: [],
|
||||||
providers: [
|
providers: [
|
||||||
@ -24,9 +24,14 @@ export class ApiModule {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor( @Optional() @SkipSelf() parentModule: ApiModule) {
|
constructor( @Optional() @SkipSelf() parentModule: ApiModule,
|
||||||
|
@Optional() http: HttpClient) {
|
||||||
if (parentModule) {
|
if (parentModule) {
|
||||||
throw new Error('ApiModule is already loaded. Import your base AppModule only.');
|
throw new Error('ApiModule is already loaded. Import in your base AppModule only.');
|
||||||
|
}
|
||||||
|
if (!http) {
|
||||||
|
throw new Error('You need to import the HttpClientModule in your AppModule! \n' +
|
||||||
|
'See also https://github.com/angular/angular/issues/20575');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
// RxJS imports according to https://angular.io/docs/ts/latest/guide/server-communication.html#!#rxjs
|
||||||
|
|
||||||
|
// See node_module/rxjs/Rxjs.js
|
||||||
|
// Import just the rxjs statics and operators we need for THIS app.
|
||||||
|
|
||||||
|
// Statics
|
||||||
|
import 'rxjs/add/observable/throw';
|
||||||
|
|
||||||
|
// Operators
|
||||||
|
import 'rxjs/add/operator/catch';
|
||||||
|
import 'rxjs/add/operator/map';
|
@ -1 +1 @@
|
|||||||
2.3.0
|
2.3.1-SNAPSHOT
|
@ -47,8 +47,13 @@ In your Angular project:
|
|||||||
// without configuring providers
|
// without configuring providers
|
||||||
import { ApiModule } from '@swagger/angular2-typescript-petstore';
|
import { ApiModule } from '@swagger/angular2-typescript-petstore';
|
||||||
|
|
||||||
|
import { HttpModule } from '@angular/http';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [ ApiModule ],
|
imports: [
|
||||||
|
ApiModule,
|
||||||
|
HttpModule
|
||||||
|
],
|
||||||
declarations: [ AppComponent ],
|
declarations: [ AppComponent ],
|
||||||
providers: [],
|
providers: [],
|
||||||
bootstrap: [ AppComponent ]
|
bootstrap: [ AppComponent ]
|
||||||
@ -87,6 +92,29 @@ export class AppComponent {
|
|||||||
Note: The ApiModule is restricted to being instantiated once app wide.
|
Note: The ApiModule is restricted to being instantiated once app wide.
|
||||||
This is to ensure that all services are treated as singletons.
|
This is to ensure that all services are treated as singletons.
|
||||||
|
|
||||||
|
#### Using multiple swagger files / APIs / ApiModules
|
||||||
|
In order to use multiple `ApiModules` generated from different swagger files,
|
||||||
|
you can create an alias name when importing the modules
|
||||||
|
in order to avoid naming conflicts:
|
||||||
|
```
|
||||||
|
import { ApiModule } from 'my-api-path';
|
||||||
|
import { ApiModule as OtherApiModule } from 'my-other-api-path';
|
||||||
|
|
||||||
|
import { HttpModule } from '@angular/http';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
ApiModule,
|
||||||
|
OtherApiModule,
|
||||||
|
HttpModule
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class AppModule {
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Set service base path
|
### Set service base path
|
||||||
If different than the generated base path, during app bootstrap, you can provide the base path to your service.
|
If different than the generated base path, during app bootstrap, you can provide the base path to your service.
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { HttpModule } from '@angular/http';
|
|
||||||
import { Configuration } from './configuration';
|
import { Configuration } from './configuration';
|
||||||
|
|
||||||
|
import { Http } from '@angular/http';
|
||||||
|
|
||||||
import { PetService } from './api/pet.service';
|
import { PetService } from './api/pet.service';
|
||||||
import { StoreService } from './api/store.service';
|
import { StoreService } from './api/store.service';
|
||||||
import { UserService } from './api/user.service';
|
import { UserService } from './api/user.service';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [ CommonModule, HttpModule ],
|
imports: [],
|
||||||
declarations: [],
|
declarations: [],
|
||||||
exports: [],
|
exports: [],
|
||||||
providers: [
|
providers: [
|
||||||
@ -24,9 +24,14 @@ export class ApiModule {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor( @Optional() @SkipSelf() parentModule: ApiModule) {
|
constructor( @Optional() @SkipSelf() parentModule: ApiModule,
|
||||||
|
@Optional() http: Http) {
|
||||||
if (parentModule) {
|
if (parentModule) {
|
||||||
throw new Error('ApiModule is already loaded. Import your base AppModule only.');
|
throw new Error('ApiModule is already loaded. Import in your base AppModule only.');
|
||||||
|
}
|
||||||
|
if (!http) {
|
||||||
|
throw new Error('You need to import the HttpModule in your AppModule! \n' +
|
||||||
|
'See also https://github.com/angular/angular/issues/20575');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user