我有一个场景,我从后端获得了HTML TRING,并且我用[innerHTML]
在HTML上渲染该字符串。我有字符串链接:
Please click on <a (click)='openMyFunction()' open dialog </a>
我能够在Angular Sanitize管道的帮助下渲染该字符串,但是click
处理程序无法正常工作。我知道,它动态添加了click
事件没有触发。
任何人都可以为我提供一个小例子,即使可以使此click
工作甚至可以使用?
如果您可以通过其ID或类名称获得新的DOM元素,则可以使用element.addEventListener
分配事件:
this.container.nativeElement.innerHTML = "<a class='mylink'>Click to show message</a>";
let children = document.getElementsByClassName("mylink");
for (let i = 0; i < children.length; i++) {
children[i].addEventListener("click", (event: Event) => {
alert("Hello world!");
});
}
您可以在中看到一个示例> 。
let str = '<div>';
str += '<div>';
str += '<ul>';
str += '<li>';
str += '<span (click)="GetXYZ()">';
str += '<i class="fa fa-level-down" aria-hidden="true"></i>';
str += '</span>';
str += '</li>';
Product.forEach(item => {
str += '<li>';
str += '<a (click)="GetABC(' + item.Id + ')">';
str += '<div>';
str += '<div>';
str += '<input type="checkbox" ';
str += 'value="' + item.Id + '" class="chk-closed" id="category-' + item.Id + '">';
str += '<label for="cat-' + item.Id + '"></label>';
str += '</div>';
str += '</div>';
str += '' + item.Name + '';
str += '</a>';
str += '</li>';
});
str += '<li>';
str += '<button (click)="Add()">Add New</button>';
str += '</li>';
str += '</ul>';
str += '</div>';
str += '</div>';
函数 - add(),getxyz(),getAbc在浏览器Inspect元素中显示,事件不起作用?
我正在附加html。
如何动态调用一个按钮单击Angular 6
ItemDetails(orderId, itemIndex) {
if ($("#accordionNew" + itemIndex).closest("div").html().indexOf("div_" + orderId) == -1) {
this.oRequest = new ORequestParameter();
var retrievedObject = localStorage.getItem('userObject');
let userObject = JSON.parse(retrievedObject) as AdminDashboardModel;
this.oRequest.SellerId = userObject.sellerId;
this.oRequest.OrderStatus = $("#hdnOrderStatus").val().toString();
this.oRequest.OrderId = orderId;
this.oRequest.OrderConfirmationFlag = '0,1,2';
let sProviderId = "0";
if (this.MultiSelectObjTypeSelected != undefined) {
let result2 = this.MultiSelectObjTypeSelected.map(a => a.id);
if (result2.join().length > 0) {
sProviderId = result2.join();
}
}
this.oRequest.ProviderID = sProviderId;
this.orderService.GetItemDetails(this.oRequest).subscribe(
lstOrderItem => {
this.lstOrderItem = lstOrderItem;
var sData = "";
if (this.lstOrderItem.length > 0) {
sData += "<div class='col-4 col-lg-4 col-md-4 col-xs-4 text-left' style='font-weight: bold;' id='div_" + orderId + "'>Product Name</div>";
sData += "<div class='col-4 col-lg-4 col-md-4 col-xs-4 text-center' style='font-weight: bold;'>Price</div>";
sData += "<div class='col-4 col-lg-4 col-md-4 col-xs-4 text-center' style='font-weight: bold;'></div>";
sData += "<div class='clearfix'></div>";
var aTag = document.createElement('a');
for (var i = 0; i < this.lstOrderItem.length; i++) {
sData += "<div style='background-color:#fff;padding:10px 0;'>";
sData += "<div class='col-4 col-sm-4 col-lg-4 col-xs-4 col-md-4'>";
sData += "<span style='text-align: justify;'>" + this.lstOrderItem[i].productName + "</span>"; /*<b style='color:red;' > (" + this.lstOrderItem[i].productType + ") < /b>*/
sData += "</div>";
sData += "<div class='col-4 col-sm-4 col-lg-4 col-xs-4 col-md-4 text-center'>";
sData += "<span><i class='fa fa-inr'></i> " + this.lstOrderItem[i].providerSellingPrice + "</span>";
sData += "</div>";
sData += "<div class='col-4 col-lg-4 col-md-4 col-xs-2 text-center' style='font-weight: bold;'>";
sData += '<a id="btn_' + this.lstOrderItem[i].orderItemID + '" data-oid=' + this.lstOrderItem[i].orderItemID + ' class="mylink btn btn-success" style="width:70px;">Pending</a>';
sData += "</div>";
sData += "</div>";
sData += "<div class='clearfix'></div>";
}
sData += "<div style='background-color:#BFE7FF;padding:15px 0;'>";
sData += "<div class='col-6 col-sm-6 col-lg-6 col-xs-6 col-md-6' style='font-weight: bold'>Total Billed Amount</div>";
sData += "<div class='col-2 col-sm-2 col-lg-2 col-xs-2 col-md-2 pull-right text-right'>";
sData += "<span><b>Price:</b> <i class='fa fa-inr'></i> " + totalAmount + "</span></div>";
sData += "<div class='clearfix'></div>";
sData += "</div>";
}
else {
$("#errorMsg").removeClass("hidden");
$("#errorMsg").addClass("alert-danger");
$("#errorMsg").html("There was no record found");
}
$("#accordionNew" + itemIndex).closest("div").html(sData);
let children = document.getElementsByClassName("mylink");
for (let i = 0; i < children.length; i++) {
children[i].addEventListener("click", (event: Event) => {
this.ConfirmThisOrder(event)
});
}
},
error => this.errorMessage = <any>error
);
}
return false;
}
ConfirmThisOrder(obj) {
var orderItemID = obj.target.dataset.oid;
}