html - 在 Angular 中使用 renderer2 在按钮中设置(单击)属性
问题描述
我正在尝试创建一个基于聊天的应用程序,在其中我根据要求创建每种类型的聊天弹出窗口并使用Angular Renderer2
. 我尝试(click)
在 UI 中渲染时向聊天消息元素添加一个属性。
我收到了这个错误:
DOMException:无法在“元素”上执行“setAttribute”:“((单击))”不是有效的属性名称。
聊天组件.ts
const btn3: HTMLDivElement = this.renderer.createElement('button');
this.renderer.addClass(btn3, 'btn');
this.renderer.addClass(btn3, 'btn-light');
this.renderer.setAttribute(btn3, '(click)', 'sendMessage()');
btn3.innerHTML = 'Maybe later!';
this.renderer.appendChild(buttons, btn3);
解决方案
setAttribute
功能是设置元素的属性,如disabled
. 相反,您可以使用该listen()
函数来添加事件侦听器。
this.renderer.listen(
btn3,
'click',
this.sendMessage.bind(this)
);
或者
this.renderer.listen(
btn3,
'click',
() => this.sendMessage()
);
您需要bind
或使用箭头函数来保留this
回调函数中关键字的含义。
推荐阅读
- reactjs - 调用组件时如何传递变量
- python-3.x - 当我运行它时,它说“'int'类型的参数不可迭代”我该怎么做才能解决它?
- python - `pip3 list` 显示卸载的包
- javascript - Gh 页面部署清单:行:1,列:1,意外令牌
- wordpress - 如何在woocommerce中为产品大量分配品牌
- ios - Jenkins Pipeline 在多个模拟器和 sdk 版本上测试 iOS 应用程序
- c++ - 前置和后置条件使用。为什么程序不响应条件
- database - 如何解决程序中的 ORA-01006?
- c# - 有没有办法使用与 OpenCv 的 MinMaxLoc 类似的方法来获取 n 个最大值的列表,而不是只有一个最大值?
- python - 检查数据框中的列是否缺少值