2017-11-14 3 views
0

Ich verwende die Angular Material Dialogfelder für die Verwaltung von Ereignissen in einem Rasterkalender.Versucht, das Öffnen eines eckigen Materialdialogs zu verhindern, während ein anderer geöffnet wird

<td *ngFor="let member of members | async" (click)="openDialogNewEvent(time,member)"> 
    <div *ngFor="let event of events"> 
     <span *ngIf="event.time===member.time" (click)="openDialogSeeEvent(event)">.</span> 
    </div></td> 

Die klickbare Spanne des zweiten Dialog starten:

openDialogSeeEvent(event) 

ist in der klickbare td Zelle, die den ersten Dialog starten:

openDialogNewEvent(time,member) 

Es wird verwendet, so zu arbeiten, aber mit der Letztes eckiges Material Update, es scheint, dass die beiden Dialoge geöffnet werden, wenn ein Klick auf die Spanne erfolgt.

Ich versuche einen Weg zu finden, OpenDialogNewEvent zu verhindern, wenn ich auf den OpenDialogSeeEvent klicke, aber ich kann es nicht finden.

Antwort

0

Versuchen Sie folgendes:

openDialogSeeEvent(event1, event2) { 
    event1.stopPropagation(); 
    // more code 
} 

Und in HTML-Seite:

(click)="openDialogSeeEvent($event, event)" 
+0

dank Notmfb für deine Antwort. Ich habe den folgenden Fehler, als ich die Zeile hatte: "Fehler TypeError: event.stopPropagation ist keine Funktion". Und es scheint den ersten Dialog "openDialogNewEvent" zu schließen ... –

+0

Ich habe bei meiner Frage einen Fehler gemacht. Ich versuche tatsächlich zu verhindern, OpenDialogNewEvent zu öffnen, wenn ich auf OpenDialogSeeEvent ... –

+0

rechts klicke. Die Funktion stopPropagation() beendet das Aufblubbern zu übergeordneten Ereignissen. Ich denke, der Grund, warum Sie den Fehler immer noch erhalten, ist, weil Sie das tatsächliche Angular-Ereignis nicht an die Funktion senden. Sie haben "openDialogSeeEvent (event)" - Ändern Sie es zu diesem "openDialogSeeEvent ($ event)" und es sollte funktionieren – Notmfb

Verwandte Themen