javascript - http请求前的数据过滤完全

标签 javascript angular

我通过http请求获取了所有的菜单列表,然后将其传递给vertical moudle, 然后垂直模块使用菜单列表过滤父菜单,但是当垂直模块过滤时,http请求没有完全获取数据,我该如何解决这个问题?谢谢!

export class SidenavComponent implements OnInit {
  public menuItems: Array<any>;
  public settings: Settings;

  constructor(public appSettings: AppSettings, public menuService: MenuService) {
    this.settings = this.appSettings.settings;
  }

  ngOnInit() {
    this.menuItems = this.menuService.getVerticalMenuItems();
  }

}

<div id="vertical-menu" [perfectScrollbar]="psConfig" [disabled]="!settings.fixedSidenavUserContent">
    <app-vertical-menu [menuItems]="menuItems" [menuParentId]="0"></app-vertical-menu>
  </div>

export class VerticalMenuComponent implements OnInit {
  @Input('menuItems') menuItems;
  @Input('menuParentId') menuParentId;
  parentMenu: Array<any>;
  public settings: Settings;

  constructor(public appSettings: AppSettings, public menuService: MenuService) {
    this.settings = this.appSettings.settings;
  }

  ngOnInit() {
// when filter the menuItems.length=0
    this.parentMenu = this.menuItems.filter(item => item.parentId === this.menuParentId);
  }

}

<div *ngFor="let menu of parentMenus" class="menu-item">

</div>


最佳答案

你可以尝试在 child 身上设置功能:

  parentMenu;
  @Input()
  set menuItems(passedValue: any[]) {
    console.log(passedValue)
        if (!passedValue.length) {
            return;
        } else {
            this.parentMenu = passedValue.filter(item => item.parentId === this.menuParentId);
        }  
    }
}

DEMO 🚀🚀

关于javascript - http请求前的数据过滤完全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57941601/

相关文章:

angular - 如何使用 Angular Material 预建主题中的主题颜色

javascript - 如何在 Javascript 中打开一个选项卡

javascript - 查找字符串中的数组值

javascript - 使用 JS 对象作为 mySQL 查询字符串的值

javascript - 如何让子窗口保持在顶部?

angular - instance[output.propName].subscribe 不是由 polyfill 生成的函数

Enter 上的 Angular(点击)事件按下发送 MouseEvent 而不是 KeyboardEvent

angular - 禁用 react 形式的输入字段

javascript - 下划线模板中的 bool 检查

javascript - 如何在jsPdf表格中设置表格