Javascript 使用angular8在循环中传递参数onclick

Javascript 使用angular8在循环中传递参数onclick,javascript,parameter-passing,angular8,ngfor,Javascript,Parameter Passing,Angular8,Ngfor,我有一个对象数组。我在循环中迭代,并将每个项的名称传递给onclick,它以app.js文件中的函数openIt(val)为目标,该文件位于assets文件夹中。即 角度代码: <div *ngFor="let item of listArray"> <button class="tabopen" onclick="openIt(item.name)">{{item.name}}</button> </div> 在app.js文件中的openIt

我有一个对象数组。我在循环中迭代,并将每个项的名称传递给onclick,它以
app.js
文件中的函数
openIt(val)
为目标,该文件位于assets文件夹中。即

角度代码:

<div *ngFor="let item of listArray">
<button class="tabopen" onclick="openIt(item.name)">{{item.name}}</button>
</div>
在app.js文件中的openIt函数中,我没有得到item.name。在我的控制台中,它显示未定义项的错误。但是当我传递静态数据时,即
onclick=“openIt('sample_data')”
它不会显示任何错误


即使item.name也存在,我也得到了正确的值。我不明白为什么我不能将迭代数据传递给参数。

如果您使用的是
Angular
,那么您应该使用
(单击)
,因为当您声明事件处理程序时,需要将
DOM
事件名称括在
括号中,并为其分配一个值

{{item.name}

事件绑定:变量1 on click=“function”,版本2(click)=“function”


{{item.name}
{{item.name}

use(click)=“function”。我想将app.js文件中不在同一组件中的函数作为目标。当我使用(单击)时,它会在我的.ts文件中查找openIt(),并显示openIt不是一个函数,因此基本上你想调用另一个组件的函数,你可以使用共享服务参见此示例()@SameerKhan否我希望我的组件与资产中的简单app.js文件通信folder@AhmadHabib您使用的是angularJs还是angular>=2,但它不会在同一组件的TS文件中查找该函数吗?由于某些原因,我想将app.js文件中的函数作为目标reasons@AhmadHabib如果以前的版本适用于您,那么这也应该适用,因为我只是用
click
的angular版本更改了事件处理程序,但它说openIt()没有定义,因为它正在同一组件中查找此函数。我仍然希望将位于资产文件夹中的app.js文件中的openIt()函数作为目标。@AhmadHabib,那么您应该在当前组件中声明一个函数,该函数调用app.js中另一个有效的函数。我使用(单击)事件调用了当前组件中的一个函数,并从该事件调用了app.js文件中的openIt()。非常感谢你,伙计。非常感谢
function openIt(data) {
console.log(data);
}
<button class="tabopen" (click)="openIt(item.name)">{{item.name}}</button>
<div *ngFor="let item of listArray">
<button class="tabopen" on-click="openIt(item.name)">{{item.name}}</button>
</div>

<div *ngFor="let item of listArray">
<button class="tabopen" (click)="openIt(item.name)">{{item.name}}</button>
</div>