How to, inside Service method (getTasksByCategory) which role is to assign result value to one of the Component parameters, assign that value to parameter and then retirve taht value from anywhere inside the Component?
This is my code: https://pastecode.io/s/fgnemrpx
The calculations inside getTasksByCategory() are correct, it's only the order of execution issue that is messing things up.
// Method execution inside Component
export class MyComponent implements OnInit {
moneyData!:any // This is the parameter I want to assign my value to !
constructor( private myService: MyService) {}
async ngOnInit() {
await this.myService.getTasksByCategory(this.moneyData, 'money') // 'money' is the category name I want to query with)
await console.log(this.money Data); // NOT WORKING!
}
}
// My Service method which has parameter 'dataConsumer'
export class MyService {
getTasksByCategory(dataConsumer:any, category:string) {
const daysFromThisWeek = this.getDaysFromThisWeek();
this.goalsService.goalsCollection()
.pipe(
map((goalsArr:any) => {
goalsArr = goalsArr.filter((item:any) => item.category === category);
return goalsArr;
}),
map((goalsArr:any) => {
const goalsIDs = goalsArr.map((item:any) => item.id);
return goalsIDs;
})
)
.subscribe((goalsIDs:any) => {
this.tasksService.tasksCollection()
.pipe(
// get category-matching-tasks
map((tasksArr:any) => {
let modArr = [] as any;
goalsIDs.forEach((goalId:any) => {
const forModArr = tasksArr.filter((task:any) => task.goal_id === goalId);
modArr = modArr.concat(forModArr);
})
return modArr;
}),
map(tasksArr => {
// get number of category-matching-tasks on each week day
let finalTasks = [] as any;
daysFromThisWeek.forEach((day:any) => {
const forFinalTasks = tasksArr.filter((task:any) => task.taskDate === day);
finalTasks = finalTasks.concat(forFinalTasks.length);
})
return finalTasks;
})
)
// .subscribe(d => {
// res = d;
// })
.subscribe(async (finalTasks: Promise<any>[]) => {
const completedTasks = await Promise.all(finalTasks);
dataConsumer = completedTasks;
// przypisz wartość do zmiennej wewnątrz subskrypcji
}
)
}) // Subscribe
}
}