gpt4 book ai didi

angular - 如何在 Angular 组件模板中使用扩展运算符

转载 作者:太空狗 更新时间:2023-10-29 19:26:37 25 4
gpt4 key购买 nike

我想将数组传递给组件模板中的函数,以下是我的工具栏的代码:

toolbar.component.html

<div *ngFor="let item of items">
<button mat-mini-fab [style.color]="item.color"
(click)="item.command(...item.commandParams)">
<i class="material-icons">{{item.icon}}</mat-icon>
</button>
</div>

toolbar.component.ts

import { Component, OnInit } from '@angular/core';

@Component({
selector: 'app-toolbar',
templateUrl: './toolbar.component.html',
styleUrls: ['./toolbar.component.scss']
})
export class ToolbarComponent implements OnInit {
items: ToolBarItem[]
constructor() {}
ngOnInit() {}
}

export class ToolBarItem {
icon = 'border_clear';
color: string;
command: () => void;
commandParams: any[];
}

这里我想用不同的命令初始化工具栏的项目。
ma​​in.ts

...
items: [
{
icon: 'mode_edit',
color: 'blue',
command: (name, family) => {
console.log('editClick!' + name + family);
},
commandParams: ['mohammad', 'farahmand'],
},
{
icon: 'delete',
color: 'red',
command: () => {
console.log('deleteClick!');
},
}
],
...

但是我得到这个错误:

Error: Template parse errors: Parser Error: Unexpected token . atcolumn 14 in [item.command(...item.commandParams)] in ...

最佳答案

您不太可能让此语法在模板中工作(有许多有效的 typescript 结构在模板中不起作用)。

您可以改为在组件中编写一个辅助方法,它将项目作为参数,然后进行适当的调用,例如:

public doCommand(item: ToolbarItem): void {
item.command(...item.commandParams);
}

然后将您的模板更改为:

<button (click)="doCommand(item)"...

关于angular - 如何在 Angular 组件模板中使用扩展运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49301656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com