Angular 在锚元素上设置(单击)属性

Angular 在锚元素上设置(单击)属性,angular,renderer,elementref,Angular,Renderer,Elementref,据我所知,在Angular 2+中使用Renderr2动态地向DOM元素添加“(单击)”属性是不可能的 如果这是真的,那么当人们在组件中动态创建HTML时,您如何添加“(单击)”属性,或者您使用什么解决方法 const element = this.renderer.createElement('a'); element.setAttribute('href', 'foobar'); // This works element.setAttribute('(click)', 'f

据我所知,在Angular 2+中使用Renderr2动态地向DOM元素添加“(单击)”属性是不可能的

如果这是真的,那么当人们在组件中动态创建HTML时,您如何添加“(单击)”属性,或者您使用什么解决方法

 const element = this.renderer.createElement('a');

 element.setAttribute('href', 'foobar');     // This works
 element.setAttribute('(click)', 'foobar');  // This does not work
(单击)不是属性,您不能这样使用它
您可以使用
.addEventListener

例如
addEventListener('click',function(){do something})



如果需要完整的角度示例:
HTML

<button #mybtn>my Button</button>
 @ViewChild('mybtn') myBtn:ElementRef;
    ngOnInit() {
      this.myBtn.nativeElement.addEventListener('click', function() {
       console.log('from there');
      })
    }

您可以使用渲染器2添加属性和事件侦听器。我认为最好使用
Renderer2
,因为它就像一个包装器,抽象了DOM操作在幕后的工作方式

 const element = this.renderer.createElement('a');
 this.renderer.setAttribute(element, 'href', 'foobar');
 this.renderer.listen(element, 'click', this.myMethod);

为什么不使用
this.renderer.setAttribute
?您可以使用
this.renderer.listen
进行此操作。如果使用
element.setAttribute
,则它应该是
onclick
,而不是
(单击)
。正确的方法是使用
renderer.setAttribute
,正如@Lends
(单击)
所述,它不是一个有效的属性名称。非常感谢@Yahya Essam,它让我走上了正确的道路。