javascript - 角度 10 动态创建按钮列表,其中每个按钮在其 onclick 事件中具有唯一参数
问题描述
ANGULAR 10:我现在被困了好几天。我正在编写一个代码,在一个可观察的事件中,有一个创建 HTML 列表的代码,并且每个项目都必须有一个按钮,因此用户可以删除每个项目。我坚持为每个必须记住“StartDateTime”的按钮创建 onclick 事件,因此当单击它时,它会调用具有正确唯一开始日期和时间的“删除”函数。
两个问题:
- 它找不到要执行的函数,所以 Angular 不编译它。该功能在另一个组件中。
- 如何正确传递在 HTML 按钮标签中记住的参数?如何为按钮设置数据,以及稍后如何从 onclick EVENT 中获取它?
是的,在问这里之前,我尝试了几个关于如何将参数传递给事件的示例(示例主要针对 JS),但 angular 不喜欢它。
case 'RSV':
// Param1 = PCNameID.
// Param2 = StartDate.
// Param3 = EndDate.
// Param4 = ReserveByAccountName.
var node = document.createElement("LI");
var textnode = document.createTextNode("Desde [" + stemp[i].Param2 + "] y hasta [" + stemp[i].Param3 + "] reservado para: " + stemp[i].Param4);
node.appendChild(textnode);
rsvNode.appendChild(node);
var node2 = document.createElement("Button");
node2.innerText = "Remover esta reserva";
var SD: string = stemp[i].Param2; // Reserve StartDate.
node2.onclick ( SD => {
var StartDate: any;
StartDate = SD;
ReservasComponent.RemReserve(StartDate); // Component named ReservasComponent.
});
rsvNode.appendChild(node2);
break;
解决方案
让我举一个例子,说明如何在 Angular 中做到这一点。
我看到你有一个带有类型字段的数组,它可以是'RSV'
你想要一个按钮的每个这样的项目。
所以首先,为此创建一个过滤数组:
this.rsvEntries = arr.filter(x => x.type === 'RSV');
接下来,在您的模板中,创建一个ngFor
转发器:
<ng-container *ngFor="let b of rsvEntries">
<li>
Desde [{{b.Param2}}] y hasta [{{b.Param3}}] reservado para: {{b.Param4}}
</li>
<button (click)="removeReservation(b)">Remover esta reserva</button>
</ng-container>
最后,在您的组件中创建removeReservation
方法:
removeReservation(rsvEntry) {
ReservasComponent.RemReserve(rsvEntry.Param2);
}
我希望这可以帮助您开始使用正确的 Angular。
推荐阅读
- angular - 根据当前会话值将登录/退出按钮添加到侧边栏
- mysql - 具有两个父级的 MySQL 表 - 在行删除期间,删除不会级联 - Google Cloud SQL
- reactjs - 在组件中设置类型?
- javascript - 设置复选框列表的样式
- python - 如何修复“ValueError:提供的数据在使用特征大小 17721 进行训练时具有 1 个维度”使用 sklearn LDA 模型进行预测
- milo - 有人检查在 kubernetes 环境中工作的 milo 服务器上的订阅行为吗?
- c# - 动态添加条件,无需每次都重新部署
- wordpress - $wpdb->insert 一次添加 3 行
- python - 为什么我的 contextProcessor 不适用于所有模板?django 2.2.1
- amazon-web-services - Amazon Elasticsearch - 无法访问 Kibana