Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

461
Visualizações
Abra el menú contextual de PrimeNG desde el código Angular 2

Necesito abrir el menú contextual de PrimeNG en la tabla usando el botón y haciendo clic con el botón derecho. Encontré el método 'alternar' y 'mostrar' en el componente para abrir el menú, pero no está abierto. Cuando llamo al método, establezco una nueva posición para el menú, pero una propiedad 'mostrar' todavía tiene un 'ninguno', pero con una nueva posición. Para obtener un componente 'contextMenu' de la plantilla en mecanografiado, uso ViewChild de Angular.

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Agregue un menú contextual y un evento de clic en un botón/span/div/etc que haga referencia a la variable local (cm en este ejemplo) y llame a la función mostrar o alternar.

 <p-contextMenu #cm [model]="items"></p-contextMenu> <button (click)="cm.show($event);$event.stopPropagation();">Show context</button>

Siéntase libre de pasar esto a una función que lo manejará:

 (click)="showContext(cm, $event)"

En el TS:

 showContext(cm: ContextMenu, event :MouseEvent) { cm.show(event); event.stopPropagation(); }

Lo más importante que parece ser necesario (al menos en PrimeNG 7) es event.stopPropagation(). Sin él, si ve el DOM, verá que el menú contextual reacciona al evento show() pero la pantalla permanece como none.

La otra cosa importante es pasar el evento del mouse en el show () que permite que el menú contextual aparezca donde está el cursor; de lo contrario, aparece en otra parte de la página.

Si intenta llamar al show/toggle puramente a través del código y usa ViewChild sin que ocurra un evento de clic, puede intentar editar manualmente el estilo y cambiar la pantalla: ninguno a una pantalla: bloque (como se detalla en el comentario de Y. Tarion )

about 4 years ago · Santiago Trujillo Relatório

0

Puede abrir programáticamente un contextMenu PrimeNG pero es un poco complicado.

Su ContextMenu en su plantilla:

 <p-contextMenu #cm [global]="true" [model]="items"></p-contextMenu>

En su botón: (click)="toggle($event)"

En su texto mecanografiado, aquí hay un ejemplo del método de alternar:

 toggle(event){ if(!this.cm.containerViewChild.nativeElement.style.display || this.cm.containerViewChild.nativeElement.style.display == 'none') { //Open contextual menu setTimeout(() => { this.cm.position(event); this.cm.containerViewChild.nativeElement.style.display = 'block'; this.cm.containerViewChild.nativeElement.style.visiblility = 'visible'; }, 0); }else{ //close contextual menu setTimeout(() => { this.cm.containerViewChild.nativeElement.style.display = 'none'; }, 0); } }

Donde cm es tu ContextMenu

 @ViewChild("cm") cm:ContextMenu;

O bien, existe una alternativa del ContextMenu para este caso de uso: el menú escalonado de PrimeNG

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda