Динамическая навигационная панель MatTabBar с МатМену

#angular #angular-material

Вопрос:

Я пытаюсь создать компонент, который будет динамически отображать навигационную панель с мат-вкладками для моего приложения. Моя проблема в том, что для некоторых навигационных элементов также требуется меню Mat. Я изо всех сил пытаюсь понять, как это сделать как можно более эффективно. Вот и пример полезной нагрузки, которую я использую для отображения навигационной панели (пожалуйста, обратите внимание на элементы меню в необязательном наблюдаемом для загрузки пунктов меню.

 pages: NavbarPage[] = [
    { 
      hasMenu: false,
      label: 'Page Uno',
      pageType: 0,
      path: '/uno',
      menuItems: null
    },
    { 
      hasMenu: true,
      label: 'Page Dos',
      pageType: 1,
      path: '/dos',
      menuItems: menuItems$
    },
    { 
      hasMenu: false,
      label: 'Page Tres',
      pageType: 2,
      path: '/tres',
      menuItems: null
    },
    { 
      hasMenu: true,
      label: 'Page Cuatro',
      pageType: 3,
      path: '/cuatro',
      menuItems: anotherMenuItemsObservable$
    }
  ];
 

Я не могу понять, как создать мат-меню только для двух пунктов, которым нужно мат-меню, а не для остальных, так как я также использую *ngFor. Я упускаю что-то очевидное? Любая помощь или объяснения будут оценены по достоинству! Одна из моих неудачных попыток приведена ниже:

 <nav mat-tab-nav-bar mat-align-tabs="center">
  <ng-container *ngFor="let page of pages">     
<ng-container *ngIf="page.hasMenu === true">
      <a mat-tab-link routerLinkActive #rla="routerLinkActive"
  (click)="navigate(page)" [matMenuTriggerFor]="appMenu">{{page.label}}
  <mat-icon *ngIf="page.isMenu">expand_more</mat-icon></a>
    </ng-container>
    <ng-container *ngIf="page.hasMenu === false">
      <a mat-tab-link routerLinkActive #rla="routerLinkActive"
      [routerLink]="page.path" [active]="rla.isActive">{{page.label}}</a>
    </ng-container>
  </ng-container>
</nav>
 

Комментарии:

1. какую ошибку вы получили?

2. Не могли бы вы объяснить немного подробнее ? после того, как вы проверили hasMenu , что вы делаете ?