ANGULAR 10 动态创建一个按钮列表,其中每个按钮在其 onclick 事件中都有唯一的参数

ANGULAR 10 Creating dynamically a list of buttons where each button has unique parameter in its onclick event

ANGULAR 10:我被困了好几天了。我在一个代码中工作,在一个可观察的事件中,有创建一个 HTML 列表的代码,并且每个项目都必须有一个按钮,以便用户可以删除每个项目。我坚持为每个必须记住“StartDateTime”的按钮创建 onclick 事件,因此当单击它时它会调用具有正确的唯一开始日期和时间的“删除”功能。

两个问题:

  1. 找不到要执行的函数,所以Angular不编译。该功能在另一个组件中。
  2. 如何正确传递在 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。