Angular 在锚元素上设置(单击)属性
据我所知,在Angular 2+中使用Renderr2动态地向DOM元素添加“(单击)”属性是不可能的 如果这是真的,那么当人们在组件中动态创建HTML时,您如何添加“(单击)”属性,或者您使用什么解决方法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
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,它让我走上了正确的道路。