Я борюсь с асинхронными шаблонами доступа к данным в приложении Angular 8 (из .NET). Я использую компоненты, службы для доступа к данным и пользовательские классы, которые воздействуют на данные из служб. Кажется, что я должен внедрить свои службы доступа к данным в свои компоненты, но где я могу использовать свои пользовательские классы для бизнес-логики?
Что я хотел бы:
СОСТАВНАЯ ЧАСТЬ:
import { Component, OnInit } from '@angular/core';
import { SampleService } from '../services/sample.service';
import { CustomBusinessLogic } from '../../cbl';
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.scss']
})
export class Example implements OnInit {
constructor(private sampleService: SampleService) { }
ngOnInit() { }
doSomething() {
const dataToActOn = this.sampleService.getDataToActOn();
// Do something with dataToActOn here
const p = new CustomBusinessLogic.Calculator(
dataToActOn.params as Settings,
dataToActOn.data1,
dataToActOn.data2
);
const res = p.calculate();
}
}
ОКАЗАНИЕ УСЛУГ:
import { Injectable } from '@angular/core';
import { ExampleDataService } from './data/example-data.service';
import { SettingsService } from './data/settings.service';
import { forkJoin } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class SampleService {
data1: any[];
data2: any[];
params: [];
constructor(private projections: ,
private data: ExampleDataService, private settingsService: SettingsService) { }
loadDataHttp() {
const id = 'for-testing';
const b = this.data.getDataSet1(new Date());
const p = this.data.getDataSet2(new Date());
const m = this.settingsService.getDataSet3(id, 2018);
return forkJoin([b, p, m]);
}
getDataToActOn() {
this.loadDataHttp().subscribe(data => {
this.data1 = data[0];
this.data2 = data[1];
this.params = data[2];
// HOW DO I RETURN THIS DATA TO THE COMPONENT
// AND HAVE IT AVAILABLE TO MY CUSTOM BUSINESS LOGIC??
});
}
}
Моя проблема (в этом псевдо/примере кода) заключается в том, что когда мой компонент достигает new CustomBusinessLogic.Calculator
, ни один из данных еще не вернулся из службы.
Как я могу реструктурировать это, чтобы я мог работать с данными, возвращаемыми службами, в моих компонентах или других службах?
Благодарю вас!