2017-03-09 18 views
5

Tôi đang tạo ứng dụng ở góc 2. Tôi muốn thêm sự kiện nhấp chuột vào phần tử html được thêm động. Tôi xác định một chuỗi (contentString), và trong chuỗi này tôi xác định phần tử html.Cách thêm sự kiện nhấp chuột vào phần tử html được thêm động theo kiểu số

var contentString = '<b>' + this.mName + '</b><br/> ' + this.mObject.category + '<br/> Click here for more information <button (click)="navigate()">Navigate here</button>'; 

Chuỗi này được đặt bên trong một yếu tố html như thế này:

var boxText = document.createElement("div"); 
    boxText.innerHTML = contentString; 

Mặc dù khi tôi kiểm tra nguyên tố, nó có sự kiện click xác định, nhưng nó không kích hoạt.

[image 1]

[image 2]

trên nhấp vào nó nên an ủi đăng nhập

navigate() { 
console.log("eeeehnnananaa"); 
} 

Nhưng điều đó không làm việc. Bất kỳ ai là giải pháp?

+0

tại sao bạn không sử dụng góc để thêm html? –

+0

@MujtabaKably Bạn sẽ làm như thế nào? Tôi không biết cách viết mã đó – FerialTeut

+1

https://stackoverflow.com/questions/36116770/angular2-catch-subscribe-to-click-event-in-dynamically-added-html/36116838#36116838 Tôi nghĩ điều này sẽ giải quyết vấn đề của bạn. –

Trả lời

6

Góc xử lý mẫu khi thành phần được biên dịch. HTML được thêm vào sau không được biên dịch nữa và các liên kết bị bỏ qua.

Bạn có thể sử dụng

constructor(private elRef:ElementRef) {} 

ngAfterViewInit() { 
    // assume dynamic HTML was added before 
    this.elRef.nativeElement.querySelector('button').addEventListener('click', this.onClick.bind(this)); 
} 
+0

FYI - không chắc chắn lý do tại sao, nhưng addEventHandler trả về lỗi "không phải là một hàm". Được sử dụng addEventListener và làm việc tuyệt vời! – firas489

+0

@ firas489 cảm ơn rất nhiều vì gợi ý. Đó là một sai lầm. Tôi sửa nó rồi. –

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