typescript-angular.README.mustache Maven / Gradle / Ivy
## {{npmName}}@{{npmVersion}}
### Building
To install the required dependencies and to build the typescript sources run:
```
npm install
npm run build
```
### publishing
{{#useNgPackagr}}
First build the package than run ```npm publish dist``` (don't forget to specify the `dist` folder!)
{{/useNgPackagr}}
{{^useNgPackagr}}
First build the package than run ```npm publish```
{{/useNgPackagr}}
### consuming
Navigate to the folder of your consuming project and run one of next commands.
_published:_
```
npm install {{npmName}}@{{npmVersion}} --save
```
_without publishing (not recommended):_
```
{{#useNgPackagr}}
npm install PATH_TO_GENERATED_PACKAGE/dist --save
{{/useNgPackagr}}
{{^useNgPackagr}}
npm install PATH_TO_GENERATED_PACKAGE --save
{{/useNgPackagr}}
```
_using `npm link`:_
{{#useNgPackagr}}
In PATH_TO_GENERATED_PACKAGE/dist:
{{/useNgPackagr}}
{{^useNgPackagr}}
In PATH_TO_GENERATED_PACKAGE:
{{/useNgPackagr}}
```
npm link
```
In your project:
```
npm link {{npmName}}
```
__Note for Windows users:__ The Angular CLI has troubles to use linked npm packages.
Please refer to this issue https://github.com/angular/angular-cli/issues/8284 for a solution / workaround.
Published packages are not effected by this issue.
#### General usage
In your Angular project:
```
// without configuring providers
import { ApiModule } from '{{npmName}}';
{{#useHttpClient}}import { HttpClientModule } from '@angular/common/http';{{/useHttpClient}}
{{^useHttpClient}}import { HttpModule } from '@angular/http';{{/useHttpClient}}
@NgModule({
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 ],
providers: [],
bootstrap: [ AppComponent ]
})
export class AppModule {}
```
```
// configuring providers
import { ApiModule, Configuration, ConfigurationParameters } from '{{npmName}}';
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 '{{npmName}}';
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';
{{#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
If different than the generated base path, during app bootstrap, you can provide the base path to your service.
```
import { BASE_PATH } from '{{npmName}}';
bootstrap(AppComponent, [
{ provide: BASE_PATH, useValue: 'https://your-web-service.com' },
]);
```
or
```
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:
```
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 '{{npmName}}';
import { environment } from '../environments/environment';
@NgModule({
declarations: [
AppComponent
],
imports: [ ],
providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }],
bootstrap: [ AppComponent ]
})
export class AppModule { }
```