component.ts中具有以下语法:
createMap() {
`const content =` `<div class="text-center">
<div class="col">
<p (click)="${open()}">Open</p>
</div>
</div>`
}
open() {};
语法已分配给变量,而变量在Leaflet中使用。我在同一组件中有open()
方法。但是该方法在页面加载时运行,并且不适用于click。
我也尝试了open()
而不使用${}
的情况,但是该方法被认为是字符串-没有引用。
答案 0 :(得分:1)
以下代码行:<p (click)="${open()}">Open</p>
正在构建字符串。 ${open()}
是将执行的代码结果插入字符串的语法。
因此,它运行代码open()
,然后将该函数调用的结果插入字符串中。
我不熟悉angular的语法,也不希望您将事件侦听器添加到元素。但是我可以向您保证,这不是吗。您需要引用函数的名称,或者需要JavaScript的内联字符串来执行,其中angular要么为您提供一些特殊的组件闭包,要么类似的东西。意思是,不使用Angular ,您会这样做:
对功能的实际引用:
myParagraphElement.addEventListener('click', open.bind(this))
[OR]
要执行的javascript文本行:
<p onClick="open()">Click Me</p> // Where open was on the window
我假设您与(click)
一起使用的角度语法应该是像<p (click)="open()">Click</p>
一样执行的javascript文本行,并且角度将假定该方法位于类中或“角度组件”。但是我猜测这仅适用于您使用的任何“模板” HTML,而不是仅生成字符串。但是,如果看不到您的所有代码,我将无法猜测。
答案 1 :(得分:0)
将事件绑定到这样的方法:
<p (click)="open()">Open</p>
,如果要提取事件,请使用open($event)