typescript - Hvordan kalle en Angular-funksjon når man klikker på lukk (X)-knappen i p-dialog?


Hvordan kalle en Angular-funksjon når man klikker p-dialog lukke (X)-knappen?

Jeg har søkt og nettopp prøvd dette (onHide)="cancel()". Men det fungerer ikke. Vennligst del dine løsninger.

Jeg vet at vi kan bruke en lukk/avbryt-knapp for å skjule popup-vinduet. Men i mitt scenario vil jeg kalle en hendelse når (X)-knappen klikkes.

Svar #1

Faktisk fungerer (onHide)="cancel()" fint ifølge denne Plunkr.

Svar #2

Det finnes en enkel løsning, som ikke er dokumentert i dokumentasjonen, men som jeg fant i dette problemet. Du trenger bare å dele toveis bindingen inn i enveismating ved å bruke visible og visibleChange egenskaper slik:

 <p-dialog header="My dialog" 
  [visible]="showDialog$ |async" 
  (visibleChange)="handleClose()"
 >

Ovenfor bruker jeg Angulars async-pipe for å vise dialogen og handleClose()-metoden for å lukke dialogen. I .ts-filen kan jeg ha en tjeneste injisert som bruker en observale av boolsk verdi som endres basert på en eller annen betingelse.

export class HomeComponent implements OnInit {

  showDialog$!: Observable<boolean>;

  constructor(private homeService: HomeService) { }

  ngOnInit(): void {
    this.showDialog$ = this.homeService.displayDialog$;
  }
  handleClose() {
    this.homeService.toogleDisplayDialog();
  }
}

Relaterte artikler