有没有办法在代码中(而不是在模板中)设置事件绑定语句?
我想动态地构建菜单,我可以使用路由(因为它们是字符串)来做到这一点,但是不能使用事件名称来做到这一点。
这是我想做的一个例子:
component.ts代码:
menuItems = [
{ title: 'Invite Users', icon: 'account-multiple-plus', clickEvent: 'invite()' },
{ title: 'Users', icon: 'account-multiple', clickEvent: 'showUsers()' },
{ title: 'Log out', icon: 'settings', clickEvent: 'logout()' },
];
Run Code Online (Sandbox Code Playgroud)
和component.html:
<ng-template let-item let-last="last" ngFor [ngForOf]="menuItems">
<button mat-menu-item (click)="item.clickEvent">
<mat-icon svgIcon="{{item.icon}}"></mat-icon>
<span>{{item.title}}</span>
</button>
</ng-template>
Run Code Online (Sandbox Code Playgroud)
没用 我想我需要评估变量item.click而不是将其用作文字。是否有解决方案或替代方案?
用角度看的方式,您只是绑定字符串,而不是事件。
您可以执行以下操作,替换
menuItems = [
{ title: 'Invite Users', icon: 'account-multiple-plus', clickEvent: 'invite()' },
{ title: 'Users', icon: 'account-multiple', clickEvent: 'showUsers()' },
{ title: 'Log out', icon: 'settings', clickEvent: 'logout()' },
];
Run Code Online (Sandbox Code Playgroud)
与
menuItems = [
{ title: 'Invite Users', icon: 'account-multiple-plus', clickEvent: this.invite },
{ title: 'Users', icon: 'account-multiple', clickEvent: this.showUsers },
{ title: 'Log out', icon: 'settings', clickEvent: this.logout },
];
Run Code Online (Sandbox Code Playgroud)
现在,您具有单击时将要触发的实际功能,而不仅仅是一个字符串。
从您的模板中:
<button mat-menu-item (click)="item.clickEvent()">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |