Я пытаюсь создать клиент API из файла swagger v2 с помощью openapi-generator-cli. Для этого я использую докер-контейнер openapi-generator-cli, который сообщает о своей версии как «4.1.0-SNAPSHOT».
Генерация кода работает со следующими параметрами:
{
"npmName": "...",
"npmVersion": "0.0.3",
"snapshot": true,
"ngVersion": "8.1.1"
}
и я также попытался установить для параметра providedInRoot
значение true.
Однако сгенерированные классы обслуживания не аннотируются декоратором @Injectable
. Поэтому, импортировав их в свой компонент и добавив службу в конструктор компонента, я не могу их использовать. Вот так выглядит мой компонент:
import { Component, OnInit } from '@angular/core';
import { UsersService, User } from '...'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor(userService: UsersService) {}
title = 'user-frontend';
ngOnInit() {
this.userService.listUsers();
}
}
что не удается, потому что userService не существует в области AppComponent.
Вот как я импортирую сгенерированный модуль:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { ApiModule } from '...';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
ApiModule,
HttpClientModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Любые идеи о том, где моя ошибка при создании клиента api?
РЕДАКТИРОВАТЬ: Сгенерированный код выглядит следующим образом:
@Injectable({
providedIn: 'root'
})
export class UsersService {
protected basePath = 'http://localhost';
public defaultHeaders = new HttpHeaders();
public configuration = new Configuration();
public encoder: HttpParameterCodec;
constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
if (configuration) {
this.configuration = configuration;
this.configuration.basePath = configuration.basePath || basePath || this.basePath;
} else {
this.configuration.basePath = basePath || this.basePath;
}
this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();
}
...
}
ApiModule
в массив провайдеров? - person Augustin R   schedule 30.07.2019