Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript *ngFor指令不显示上下文菜单的菜单项数据右键单击_Javascript_Angular_Typescript_Angular Material_Contextmenu - Fatal编程技术网

Javascript *ngFor指令不显示上下文菜单的菜单项数据右键单击

Javascript *ngFor指令不显示上下文菜单的菜单项数据右键单击,javascript,angular,typescript,angular-material,contextmenu,Javascript,Angular,Typescript,Angular Material,Contextmenu,我在上下文菜单中使用右键单击功能时遇到问题。我的菜单项没有显示,因为我的第二个ngFor=“let row”条件。。。但我需要右键单击选中的行对象,以便从该行传入json值 现在模态正在弹出,但没有显示菜单项按钮,因此我无法使用click事件 我做错了什么 view.component.html <!--Context Right Click Menu--> <mat-menu #contextMenu="matMenu" #contextMenu2

我在上下文菜单中使用右键单击功能时遇到问题。我的菜单项没有显示,因为我的第二个ngFor=“let row”条件。。。但我需要右键单击选中的行对象,以便从该行传入json值

现在模态正在弹出,但没有显示菜单项按钮,因此我无法使用click事件

我做错了什么

view.component.html

  <!--Context Right Click Menu-->
  <mat-menu #contextMenu="matMenu" #contextMenu2="matMenu">
      <ng-container *ngFor="let funct of FunctionNames">
        <ng-container *ngFor="let row">
        <div mat-menu-item>
            <button mat-menu-item (click)="onContextMenuAction(row)">{{funct}}</button>
        </div>
      </ng-container>
    </ng-container>

  </mat-menu>

  <!--Context Right Click Menu-->
  <mat-menu #contextMenu="matMenu" #contextMenu2="matMenu">
      <ng-container *ngFor="let funct of FunctionNames">
        <ng-container *ngFor="let row">
        <div mat-menu-item>
            <button mat-menu-item (click)="onContextMenuAction(row)">{{funct}}</button>
        </div>
      </ng-container>
    </ng-container>

  </mat-menu>

第二个
*ngFor
不包含要循环的数组。如果您需要索引,您可以直接在第一个

<mat-menu #contextMenu="matMenu" #contextMenu2="matMenu">
      <ng-container *ngFor="let funct of FunctionNames">
        <div mat-menu-item>
            <button mat-menu-item (click)="onContextMenuAction(funct)">{{funct}}</button>
        </div>
    </ng-container>
  </mat-menu>

您正在尝试获取对模板中“角度材质”菜单数据的引用

您可以使用:
let refrenceName=“dataItemKey”
来完成此操作

它将获得一个名为
referencename
的引用,指向键名为
dataItemKey
的菜单数据

在您的情况下,它就像:
let row=“row”

所以你可以参考它


我刚刚更新了代码。。。所以我需要选定的行对象值。。。不需要索引如果您的灵感是使用let row is material data table,那么我不认为可以在这里应用相同的原则,对于完整的行,您可以简单地返回
funct
作为参数,然后根据您在组件中的需要操作数据,这在代码中是什么样子的?我对答案有点困惑
<mat-menu #contextMenu="matMenu" #contextMenu2="matMenu">
      <ng-container *ngFor="let funct of FunctionNames">
        <div mat-menu-item>
            <button mat-menu-item (click)="onContextMenuAction(funct)">{{funct}}</button>
        </div>
    </ng-container>
  </mat-menu>
onContextMenuAction(funct) {
  // you should get entire row data here 
}
<mat-menu #contextMenu="matMenu">
    <ng-template matMenuContent let-row="row">
        <button mat-menu-item (click)="onContextMenuAction1(row)">Action 1</button>
        <button mat-menu-item (click)="onContextMenuAction2(row)">Action 2</button>
    </ng-template>
</mat-menu>
this.contextMenu.menuData = { 'row': yourValue };