如何把点击事件写在html中,关于angular:如何将点击事件添加到打字稿中动态添加的html元素中...

我正在用angular 2构建一个应用程序。我想将click事件添加到动态添加的html元素中。

我定义一个字符串(contentString),并在此字符串中定义html元素。

var contentString = '' + this.mName + '
' + this.mObject.category + '
Click here for more information Navigate here';

该字符串被放置在html元素中,如下所示:

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

boxText.innerHTML = contentString;

尽管当我检查元素时,它已定义了click事件,但它不会触发。

ba4bc952326617270e633f00c5453a5f.png

ab04852666dbd2be578b46821d4b0a41.png

点击它应该控制台日志

navigate() {

console.log("eeeehnnananaa");

}

但这不起作用。

有人解决吗?

为什么不使用angular添加html?

@MujtabaKably你会怎么做? 我不知道该怎么写代码

stackoverflow.com/questions/36116770/我认为这将解决您的问题。

编译组件时,Angular处理模板。 以后添加的HTML将不再编译,绑定将被忽略。

您可以使用

constructor(private elRef:ElementRef) {}

ngAfterViewInit() {

// assume dynamic HTML was added before

this.elRef.nativeElement.querySelector('button').addEventListener('click', this.onClick.bind(this));

}

仅供参考-不知道为什么,但是addEventHandler返回了" not a function"错误。 使用了addEventListener,效果很好!

@ firas489非常感谢您的提示。 那是个错误。 我修好了它。

就我而言,我做这些-

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

const contentString = '' + this.mName + '
' + this.mObject.category +

'
Click here for more information ';//as per your code

boxText.innerHTML = contentString;

const button = document.createElement('button');

button.addEventListener('click', (e) => {

this.navigate();//your typescript function

});

button.innerText = 'Navigate here';

boxText.appendChild(button);

Call click event dynamically

ConfirmThisOrder(obj) {

var orderItemID = obj.target.dataset.oid;

}

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 +="Product Name";

sData +="Price";

sData +="";

sData +="";

var aTag = document.createElement('a');

for (var i = 0; i < this.lstOrderItem.length; i++) {

sData +="";

sData +="";

sData +="" + this.lstOrderItem[i].productName +""; /* (" + this.lstOrderItem[i].productType +") < /b>*/

sData +="";

sData +="";

sData +="" + this.lstOrderItem[i].providerSellingPrice +"";

sData +="";

sData +="";

sData += 'Pending';

sData +="";

sData +="";

sData +="";

}

sData +="";

sData +="Total Billed Amount";

sData +="";

sData +="Price: " + totalAmount +"";

sData +="";

sData +="";

}

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 = error

);

}

return false;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值