2017-01-16 25 views
13

Angular2 ile etkileşimli bir web uygulaması yapıyorum ve bir açısal bileşen üzerinde sağ tıklamaları yakalamanın bir yolunu arıyorum. Kendi özel içerik menüsümü görüntüleyebilmem için tarayıcı içerik menüsünün sağ tıklamayla görünmesini de engellemem gerekiyor.Açısal 2 sağ tıklama olayları?

Açısal 1'de sağ tıklama olayını yakalamak için özel bir yönerge oluşturmanız gerektiğini biliyorum. Bu hala Angular 2'de durum mu, yoksa daha kolay bir yol var mı? Önceki SO sorularına bir göz attım ama Angular2 ile ilgili değiller.

Angular2'de sağ tıklamaları yakalama ve tarayıcı içerik menüsünün görüntülenmesini nasıl önleyebilirim?

cevap

30

olarak

Ama sadece kullanabilir üçüncü parti kütüphaneler: $event isteğe bağlıdır ve dönüş

<div (anyEventName)="whateverEventHandler($event)"> 
</div> 

Not olduğunu işlev olay işleyicisinin geri dönüşüdür, bu nedenle olaydan varsayılan tarayıcı eylemini önlemek için return false;'u kullanabilirsiniz.

Sizin durumunuzda olay adı contextmenu. Yani, kodunuz böyle bir şey olabilir:

@Component({ 
    selector: 'my-app', 
    template: ` 
    <div (contextmenu)="onRightClick($event)"> 
     Right clicked 
     {{nRightClicks}} 
     time(s). 
    </div> 
    `, 
    // Just to make things obvious in browser 
    styles: [` 
    div { 
     background: green; 
     color: white; 
     white-space: pre; 
     height: 200px; 
     width: 200px; 
    } 
    `] 
}) 
export class App { 
    nRightClicks = 0; 

    constructor() { 
    } 

    onRightClick() { 
    this.nRightClicks++; 
    return false; 
    } 
} 

İşte tam çalışma örnek: biz tam sayfa için aynı şeyi nasıl
http://on.gurustop.net/2E0SD8e

+0

? Bütün sayfa için sağ tıklamayı devre dışı bırakmak istiyorum – bpbhat77

+2

Evet, @HostListener ('document: contextmenu', ['$ event']) 'işlevini kullanabilirsiniz, burada güncellenmiş bir örnek var: https://embed.plnkr.co/YasKxNbBDwbFXw96LCr1/?show=src%2Fapp.ts,preview Dinamik olarak yapmanız gerekiyorsa, http://stackoverflow.com/questions/35080387/dynamically-add-event-listener-in-angular-2/35082441# adresine gidin. 35082441 – Meligy

+0

Teşekkür ederim! Bu bir çekicilik gibi çalıştı! yuppi! – b0rgBart3

-7

Angular 2 şablonunda Javascript kullanamazsınız. , Sen gibi herhangi bir olay yakalayabilir tür Açısal 2+ olarak angular2-contextmenu.