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

108
Visualizações
Angular 4 Confirmar directiva

Estoy tratando de crear una directiva para jQuery Confirm en Angular 4. Sin embargo, tengo dificultades para detener los eventos vinculados. Aquí está mi estructura:

menús.componente.html:

 <a (click)="delete(menu)" class="btn" confirm><i class="icon-trash"></i></a>

menús.componente.ts:

 delete(menu: Menu): void { this.menuService.delete(menu.id) .subscribe( error => this.errorMessage = <any>error); }

confirmar.directiva.ts:

 import {Directive, ElementRef, Input} from '@angular/core'; @Directive({ selector: '[confirm]' }) export class ConfirmDirective { constructor(el: ElementRef) { $(el.nativeElement).on('click', function () { $(this).confirm({ confirm: function () { return true; } }); return false; }); } }

Aparece el cuadro de confirmación, pero el evento se activa antes, por lo que es inútil. Quiero que esta directiva detenga la activación de un evento, dispárelo si se confirma la acción, cancélelo de lo contrario.

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

0

Yo trabajaría alrededor de esto de esta manera:

 @Directive({ selector: '[confirm]' }) export class ConfirmDirective { @Output('confirm-click') click: any = new EventEmitter(); @HostListener('click', ['$event']) clicked(e) { $.confirm({ buttons: { confirm: () => this.click.emit(), cancel: () => {} } }); } }

tu html debería verse así:

 <a (confirm-click)="delete(menu)" class="btn" confirm>Delete</a>

Ejemplo de Plunker

over 4 years ago · Santiago Trujillo Relatório

0

En realidad, puede combinar el nombre de la directiva y la salida.

 <button class="btn" (confirm)="delete()">delete</button> @Directive({ selector: '[confirm]' }) export class ConfirmDirective { @Output() confirm = new EventEmitter<any>(); constructor(private el: ElementRef) { } @HostListener('click') onClick() { $.confirm({ buttons: { confirm: () => this.confirm.emit() } }); } }
over 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