2016-03-13 40 views
29

Nếu tôi có các nút sau trong một tập tin htmlloại nguyên cảo gì là Angular2 kiện

<button (click)="doSomething('testing', $event)">Do something</button> 

Ngoài ra, trong thành phần tương ứng, tôi có chức năng này

doSomething(testString: string, event){ 
    event.stopPropagation(); 
    console.log(testString + ': I am doing something'); 
} 

Có một loại thích hợp mà nên được gán cho đầu vào $ event? Tham số sự kiện chính nó là một đối tượng, nhưng nếu tôi gán nó vào một đối tượng kiểu, tôi nhận được một lỗi

Property 'stopPropogation' does not exist on type object 

Vì vậy, những gì hiện nguyên cảo xem xét các sự kiện $ đầu vào?

+2

'doSomething (testString: string, event: MouseEvent)' –

+0

Eric Martinez: Bạn có thể đăng bình luận của mình làm câu trả lời không? Điều đó xóa tất cả các lá cờ tôi đã nhận được, vì vậy tôi lấy nó là chính xác. –

Trả lời

25

theo đề nghị của @AlexJ

sự kiện này bạn đi qua $event là một dO Sự kiện M, do đó bạn có thể sử dụng loại EventName.

Trong trường hợp của bạn sự kiện này là một MouseEvent, và các tài liệu nói, trích dẫn

Các MouseEvent giao diện đại diện cho sự kiện xảy ra do người dùng tương tác với một thiết bị trỏ (ví dụ như một con chuột). Các sự kiện phổ biến sử dụng giao diện này bao gồm nhấp, dblclick, mouseup, mousedown.

Trong tất cả các trường hợp đó, bạn sẽ nhận được MouseEvent.

Một ví dụ khác: nếu bạn có mã này

<input type="text" (blur)="event($event)" 

Khi sự kiện này gây nên bạn sẽ nhận được một FocusEvent.

Vì vậy, bạn có thể làm điều đó thực sự đơn giản, an ủi đăng sự kiện này và bạn sẽ thấy một thông báo tương tự với trang này rằng chúng tôi sẽ có tên sự kiện

FocusEvent {isTrusted: true, relatedTarget: null, view: Window, detail: 0, which: 0…} 

Bạn luôn có thể truy cập vào tài liệu cho một danh sách hiện có Events.

Sửa

Bạn cũng có thể kiểm tra các nguyên cảo dom.generated.d.ts với tất cả các typings chuyển. Trong trường hợp của bạn stopPropagation() là một phần của Event, được mở rộng thêm MouseEvent.

0

Tôi chắc chắn vấn đề không liên quan đến mã của bạn. Tôi đoán một cái gì đó với thiết lập của bạn là không đúng.

doSomething(testString: string, event){ 
    event.stopPropagation(); 
    console.log(testString + ': I am doing something'); 
    console.debug(event); 
    } 

sản xuất sản lượng này

thử nghiệm: Tôi đang làm một cái gì đó VM1901 app.ts transpiled: 26MouseEvent {isTrusted: đúng, screenX: 2878, Screeny: 504, clientX: 67, clientY: 73 ...}

Xem thêm https://plnkr.co/edit/xxaQbh?p=preview

1

Theo chính thức event là loại 0.123., cũng trong trường hợp của tôi khi tôi typecaste event đến Object nó does't ném bất kỳ lỗi, nhưng sau khi đọc tài liệu hướng dẫn của angular2 tìm thấy event là loại EventEmitter vì vậy bạn có thể gõ đẳng cấp sự kiện của bạn vào EventEmitter

thấy ở đây là plunkr cho cùng http://plnkr.co/edit/8HRA3bM0NxXrzBAjWYXc?p=preview

để biết thêm tham khảo ở đây https://angular.io/docs/ts/latest/guide/template-syntax.html#!#event-binding

Các vấn đề liên quan