Я столкнулся с некоторой проблемой при повторном отражении в моем родительском компоненте, если элемент был включен или нет на основе выбора, сделанного в дочернем компоненте.
Я показываю свой дочерний контент через роутер.
Общий вид: у меня есть боковое меню с несколькими заголовками. При нажатии на заголовок появится страница просмотра, и внутри нее появится флажок, позволяющий пользователю включить или отключить элемент заголовка меню.
Я хочу, чтобы пользователь установил флажок в дочернем компоненте - чтобы рядом с включенным заголовком появилась галочка (без необходимости обновлять страницу - что сейчас и происходит)
Родительский компонент:
public ngOnInit() {
this.getMenuHeadersList();
}
private getMenuHeadersList() {
this.service.getMenuItemList(this.id).subscribe(
(data: MenuItems[]) => {
if (data !== undefined) {
this.menuList= data;
}
},
(error: any) => {
.....
});
}
//for loop menuItem of menuList
<a id="menuId" class="refine-menu-collapse" [routerLink]="[...]">
<span *ngIf="menuItem.isEnabled" class="win-icon win-icon-CheckMark"></span>
<span class="refine-menu-subtitle">{{menuItem.name}}</span>
</a>
промежуток, где я проверяю, является ли menuItem.isEnabled
галочкой, которую я хотел бы видеть, как только пользователь включит ее из дочернего представления.
Дочерний компонент:
public ngOnInit() {
this.getMenuHeadersList();
}
private onMenuItemValueChange(menuItem: MenuItemType, checked: boolean) {
menuItem.isEnabled = checked;
this.saveMenuItemTypes(menuItem);// makes a service call and calls getMenuHeadersList.
}
private getMenuHeadersList() {
this.service.getMenuItemList(this.id).subscribe(
(data: MenuItems[]) => {
if (data !== undefined) {
this.menuList= data;
this.singleMenuItem = this.menuItems.find((value) => value.menuItem.id === this.menuId);
}
},
(error: any) => {
.....
});
}
Child Html:
<input type="checkbox"
[checked]="menuItem?.isEnabled"(change)="onMenuItemValueChange(menuItem, $event.target.checked)">
<span class="text-body">title</span>
У меня такое чувство, что мне не нужно совершать вызов, чтобы получить menuItems в дочернем компоненте, и я мог бы получить его от родителя, но я не уверен, как я все испортил.