У меня есть асинхронные c данные, которые я отображаю в шаблоне:
<div *ngFor="let application of (applicationService.applications | async)"></div>
У объекта application
есть рабочие свойства: [{id: 1, name: "O"}]
Также у меня есть сервис WorkerService
. Мне нужно создать для каждого приложения собственный экземпляр WorkerService
, а затем использовать его в шаблоне, например:
<div *ngFor="let application of (applicationService.applications | async)">
<div *ngFor="let workers of application.workerService.get()"></div>
</div>
Как это сделать правильно?
Мое решение:
class Application {
private application: Application;
constrcutor(public application, public workerService: WorkerService) {
this.workerService(this.application.workers);
}
getWorkers() {
return workerService.get();
}
}
Затем сопоставьте его:
@Injectable()
export class ApplicationService {
loadApplication(): Observable<any> {
return request.get().pipe(map(application) => new Application(application, this.workerService)));
}
}
Затем для использования в шаблоне:
<div *ngFor="let application of (applicationService.loadApplication() | async)">
<div *ngFor="let workers of appliction.getWorkers()"></div>
</div>
Мне не нравится, что ApplicationService
зависит от WorkerService
, потому что для этого требуется Application(application, this.workerService)
в ответе карты.
Не могли бы вы сказать, как это сделать более правильно?