Я работаю над проектом Angular.
Когда пользователи нажимают на категории, мне нужно показать соответствующие подкатегории.
Например, нажав на Напитки Мне нужно отобразить: Кокс , Фанта , Пепси ...
При нажатии на еду, например, мне нужно отобразить: Гамбургеры , Картофель , Рыба
И это работает, когда я нажимаю на основные группы, подгруппы меняются и отображаются в соответствии с ожиданиями.
Но я бы хотел установить Drinks в качестве категории по умолчаниюПоэтому, когда я подхожу к экрану, я хочу увидеть Напитки и Колу, Фанта , Пепси .. Как будто я вручную нажал на Напитки ..
Я пытался добиться этого следующим образом:
шаг 1:
Получить данные из базы данных, всеосновные категории, все подкатегории, поэтому я могу применить фильтр - на основе categoryId - получить все подкатегории:
export class MainScreenCategories implements OnInit {
@Input() groups: Group[];
@Input() subGroups: Group[];
filteredSubGroups: Group[];
selectedId: string;
selectedSubId: string;
constructor(
private _ref: ChangeDetectorRef,
private _activatedRoute: ActivatedRoute,
private _groupService: GroupService,
private _http: HttpClient,
private _articleService: ArticleService,
private _globalHelper: GlobalHelperService
) { }
ngOnInit() {
this.selectedId = '78ebcad8-8cb0-4172-8cd8-bb6fb6b3bf53';
this.groups = this._activatedRoute.snapshot.data['groups'];
this.subGroups = this._activatedRoute.snapshot.data['subGroups'];
// This is source to my template directive *ngFor - filteredSubGroups
this.filteredSubGroups = this.subGroups.filter(item => item.parentId == this.selectedId);
console.log(this.filteredSubGroups);
//this._ref.detectChanges();
//I've tried adding timeout while fetching data
//this._groupService.getAll().subscribe(data => setTimeout(() => this.groups = data, 0));
//this._groupService.getAllSubGroups().subscribe(data => setTimeout(() => this.subGroups = data, 0));
}
шаг 2:
Напишите немного HTMLотображать данные:
<div class="tab-pane" id="whatever">
<ul>
<li *ngFor="let subgroup of filteredSubGroups">
<button type="button" data-toggle="" data-target="" class="btn categories-btn">
{{subgroup.title | uppercase}}
</button>
</li>
</ul>
</div>
Как видите, ребята, я зацикливаюсь filteredSubGroups
для отображения подкатегорий.
И мой console.log(filteredSubGroups)
в ngOnInit
также содержит правильные данные, нопри первом запуске приложения я получаю в консоли следующее сообщение:
Когда я очищаю консоль и перехожу к шаблону другого компонента и возвращаюсь к этомуВо-первых, я вижу, что в моей консоли больше нет ошибок, только 3 подкатегории зарегистрированы там, потому что я сказал в ngOnInit
console.log(filteredSubGroups)
,
но даже если они зарегистрированы, они не видны в шаблоне html, и это самая большая проблема, я не могу понять, почему?
Спасибо, ребята
Любая помощь - это здорово!