【问题标题】:Button not firing Click event Angular 14.1按钮未触发单击事件Angular 14.1
【发布时间】:2022-07-22 17:32:24
【问题描述】:

我有一个 Angular Material 14.1 mat-dialog 弹出窗口,允许用户编辑电话号码列表。由于电话号码列表可能是 0 位,我有一个 FormArray,其中每个电话号码都有自己的 FormGroup 属性(号码、类型、姓名等)。然后将此FormArray 分配给处理该电话号码编辑的组件:

    <ng-container formArrayName="phoneNumbers">
        <app-phone-edit *ngFor="let item of phoneNumbers.controls; index as i" (deletePhoneNumber)="deletePhone(i)"
            [formGroup]="phoneNumberFormGroup(i)"></app-phone-edit>
    </ng-container>

这个组件有一个菜单图标,其中一个选项是“删除电话号码”,它发出上面代码响应的事件。

<!-- Phone Edit Component -->
    <mat-form-field>
        <input matInput mask="0000 000 000" formControlName="phoneNumber" placeholder="Phone Number">
    </mat-form-field>
    <button mat-menu-item>
        <mat-icon aria-label="Delete Phone Number" (click)="delete()">delete</mat-icon>
        Delete Number
    </button>

在这个组件后面的 Typescript 文件中,目前只是将删除事件记录到控制台,进行测试,然后发出事件:

delete(): void {
    console.log('Delete in Phone Component', this.formGroup);
    this.deletePhoneNumber.emit();
}

问题是,该按钮有时只能工作。我可以点击“删除”10次,它只会调用一次函数后面的代码,也许是第三次尝试,也许是第一次,也许根本没有。我已经在调试中运行代码并且没有错误。我在delete()方法上设置了断点,而且很少被调用。

我似乎无法在 Stack Blitz 中复制它,所以它似乎是我的代码特有的,但代码非常简单。我添加了一个新的菜单按钮“测试”,同样的事情发生了。我觉得这与FormArray 有关,并且可能与 Angular 为每个“行”处理多个菜单的方式有关,或者可能在我看不到的地方发生错误。在 Chrome 的控制台或 VSCode 的调试中没有记录错误。

我该如何解决这个问题?

【问题讨论】:

  • 您是否从浏览器的开发者控制台获得更多信息?

标签: angular button angular-material


【解决方案1】:

您似乎已将delete() 函数附加到&lt;mat-icon&gt; 元素,但它应该在&lt;button&gt; 本身上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 2013-01-17
    • 2012-03-14
    • 2011-12-02
    • 2013-10-14
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多