【问题标题】:Set (click) attribute in button using renderer2 in Angular在 Angular 中使用 renderer2 在按钮中设置(单击)属性
【发布时间】:2021-02-02 10:21:36
【问题描述】:

我正在尝试创建一个基于聊天的应用程序,在其中我根据要求创建每种类型的聊天弹出窗口并使用Angular Renderer2。我尝试在 UI 中渲染时向聊天消息元素添加 (click) 属性。

我收到了这个错误:

DOMException:无法在“元素”上执行“setAttribute”: '((click))' 不是有效的属性名称。

chat.component.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);

【问题讨论】:

    标签: html angular typescript angular-renderer2


    【解决方案1】:

    setAttribute 功能是设置元素的属性,如disabled。相反,您可以使用 listen() 函数添加事件侦听器。

    this.renderer.listen(
      btn3, 
      'click', 
      this.sendMessage.bind(this)
    );
    

    this.renderer.listen(
      btn3, 
      'click', 
      () => this.sendMessage()
    );
    

    您要么需要bind,要么使用箭头函数在回调函数中保留this关键字的含义。

    【讨论】:

    • 感谢@michael-d 的帮助,问候,巴拉特
    猜你喜欢
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2013-01-22
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多