Как я могу вставить вызов функции через * ngFor, в то время как этот вызов приходит как вставленная строка из массива, по которому я перебираю?
Мой массив содержит список действий пользователя, которые описаны ихимена функций (среди прочих).Шаблон содержит часть, которая должна перечислять эти действия для каждой пользовательской записи, используя директиву Ionic ion-fab
.Вместо того, чтобы записывать каждое действие, я хочу перебрать список с помощью *ngFor
и вставить каждое имя функции в атрибут (click)
.
Однако мое текущее решение не работает.
Вот мойкод:
Класс
constructor(
public navCtrl: NavController,
public navParams: NavParams,
private usersProv: Users
) {
this.userActions = [
{
'label' : 'Edit',
'function' : 'editUser',
'icon' : 'ios-create-outline',
'color' : 'primary'
},
{
'label' : 'Remove',
'function' : 'removeUser',
'icon' : 'ios-trash-outline',
'color' : 'yellow'
},
{
'label' : 'Send message',
'function' : 'sendMessageToUser',
'icon' : 'ios-send-outline',
'color' : 'secondary'
}
];
console.info('userActions', this.userActions);
}
Шаблон
<ion-fab right>
<button ion-fab mini color="light">
<ion-icon name="ios-arrow-dropleft"></ion-icon>
</button>
<ion-fab-list side="left">
<div *ngFor="let action of userActions">
<button ion-fab mini color="{{action.color}}" title="{{action.label}}" (click)="action.function(user)">
<ion-icon name="{{action.icon}}"></ion-icon>
</button>
</div>
</ion-fab-list>
</ion-fab>
И это ошибка, которую я получаю:
ERROR TypeError: "_v.context.$implicit.function is not a function"
Вставка с помощью фигурных скобок ((click)="{{action.function}}(user)"
) тоже не помогает.Ошибка тогда:
`ERROR Error: "Uncaught (in promise): Error: Template parse errors: Parser Error: Got interpolation ({{}}) where expression was expected at column 0 in [{{action.function}}(user)]`
Возможно ли это вообще?
И рекомендуется ли подходить к нему так, как я делаю?
Заранее спасибо!