Я пытаюсь получить элементы из моего бэк-энда, чтобы сгенерировать навигацию. Чтобы быть более конкретным, у меня есть группа оборудования. Тезисы 1 относятся к суб-навигационным элементам. Эти элементы суб-навигации потенциально связаны с элементами суб-навигации, а последняя суб-навигация связана с глобальным элементом навигации. Поэтому для каждой группы я стараюсь связать все суб-навигационные и глобальные. У меня изначально список группы. Я зацикливаюсь на нем, чтобы получить элементы суб-навигации, непосредственно связанные с этой группой, затем сохраняю атрибут, связанный с другой суб-навигацией. Затем я использую инструкцию while, чтобы получить все элементы навигации, пока атрибут не равен нулю. Если это ноль, то больше нет элемента под-навигации. Но я думаю, что есть асинхронная проблема, и я не знаю, как ее решить. запрос внутри, пока инструкция не останавливается. Это делает тот же запрос к бесконечности
idParent = null;
constructor(private sousMenuService: SousMenuService, private groupeService: GroupeService, private userService: UserService, private supportService: SupportService) { }
ngOnInit() {
console.log(this.role_user);
this.loading = true;
//Récupération des informations de l'équipe de l'utilisateur -
this.supportService.getSupportById(this.id_support).subscribe(support =>{
this.support = support[0];
console.log(this.support.acces);
//!!!this.access is a tab of string with only the name of group(it's used to get group that have link with sub-nav)!!!
this.acces = this.support.acces.split(';');
//Récupération des groupes d'équipements accessibles par le support de l'utilisateur ( en bouclant sur chaque groupe d'équipement)
for (var i= 0; i < this.acces.length; i++){
console.log('itération',i);
//this.parent = true;
this.groupeService.getGroupeByName(this.acces[i]).subscribe(grp =>{
console.log(i); //this console.log show me 5 for each iteration (bc of the async)
//Récupération des menus liés directement aux groupes d'équipements
this.sousMenuService.getSousMenuById(grp[0].id_menu).subscribe(resSm => {
// this.sousMenu.push(resSm[0]);
console.log('le sous menu ',resSm[0].id_parent);
this.idParent = resSm[0].id_parent;
//
All console.log inside while don't show anything I can just see that there are several requests looping
while(this.idParent!= null){
// if (this.idParent == null){
// this.parent = false;
// console.log('pas de parent');
// }
//Récupération des menus parents
this.sousMenuService.getSousMenuById(this.idParent).subscribe(sousMenu2=>{
console.log('bonjour');
this.idParent = sousMenu2[0].id_parent;
console.log(sousMenu2[0].id_parent);
//if (this.idParent == null)
//console.log('voila');
});
}
});
});
}
console.log(this.grps);
console.log(this.sousMenu);
});
}
Я хочу правильно переключить idParent и получить правильный результат. Какие-либо предложения ? Спасибо, ребята