Assign value to parameter inside subscribe method
unknown
typescript
3 years ago
2.2 kB
26
Indexable
// Method execution inside Component
export class MyComponent implements OnInit {
moneyData!:any // This is the parameter I want to assign my value !
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
}
}Editor is loading...