首页 文章

在角度2中显示从子组件到父组件的已检查ID

提问于
浏览
0

如果已根据子组件中的选择启用了项目,则在我的父组件中重新选择时遇到一些麻烦 .

我通过路由器插座显示我的孩子内容 .

总体观点:我有一个带有几个 Headers 的侧面菜单 . 单击 Headers 后,将出现一个视图页面,其中包含一个复选框,允许用户启用或禁用菜单 Headers 项 .

我想要的是当用户检查子组件中的框时 - 启用标头旁边会出现一个复选标记(无需刷新页面 - 这是当前发生的事情)

父组件:

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) => {
                .....
            });
       }

儿童HTML:

<input type="checkbox"
       [checked]="menuItem?.isEnabled"(change)="onMenuItemValueChange(menuItem, $event.target.checked)">
                            <span class="text-body">title</span>

我有这种感觉,我不需要调用来获取子组件中的menuItems,我可以从父母那里得到它,但我不知道我是如何弄乱自己的 .

1 回答

  • 1

    你没有孩子/父母 . 最简单的方法是在服务中使用变量如果您的服务有一些喜欢的话

    checkedItems:any[]=[]
    

    如果你的 Headers

    get checkedItems()
    {
        return yourservice.checkedItems;
    }
    <span *ngIf="checkedItems[i]" class="win-icon win-icon-CheckMark"></span>
    

    在您的组件中,某处

    yourservice.checkedItems[index]=true
    

相关问题