У меня есть служба, с которой я не могу получить forkJoin
для возврата правильных данных.
public loadMatchAnalysis(clientId: string): void {
this.matchAnalysisService
.getClientPolicySummary(clientId)
.pipe(
switchMap(clientPolicySummary => {
const mappings$ = flatMap(clientPolicySummary.policyGroups, policyGroup => {
return policyGroup.policies.map(policy => this.matchAnalysisService.getMappings(clientId, policy.id));
});
const calculations$ = flatMap(clientPolicySummary.policyGroups, policyGroup => {
return policyGroup.policies.map(policy =>
this.matchAnalysisService.getCalculationMethods(clientId, policy.id)
);
});
return forkJoin(of(clientPolicySummary), ...mappings$, ...calculations$); //can't get this to return properly
})
)
.subscribe(
([clientPolicySummary, mappings, calculations]: [
ClientPolicySummary,
MatchAnalysisMapping[],
Calculation[]
]) => {
let matchAnalysis: MatchAnalysis[] = [];
console.log('mappings', mappings);
console.log('calculations', calculations); //this will be what 'mappings' should be
clientPolicySummary.policyGroups.forEach(policyGroup => {
policyGroup.policies.forEach(policy => {
const _mappings = mappings.filter(m => m.id === policy.id);
const _calculations = calculations.filter(c => c.id === policy.id);
matchAnalysis.push({ policy: policy, mappings: _mappings, children: _calculations });
});
});
new GetMatchAnalysisLoadedAction({ data: matchAnalysis }).dispatch();
},
error => {
}
);
}
На основании ввода моего forkJoin
я пытаюсь вернуть данныев качестве кортежа для параметра в subscribe()
.Если я использую оператор распространения на mappings$
или calculations$
, то возвращаемые данные будут в зависимости от того, что будет первым, кто использует оператор.Это заставляет меня думать, что я не должен использовать оператор распространения здесь - но я не уверен, что еще нужно сделать, чтобы вернуть данные и получить доступ к ним как к ненаблюдаемым данным.