которая передается как @Input в общеиспользуемый компонент:
<ng-container *ngFor="let button of buttons">
<button class="btn">{{ button }}</button>
Как можно определить, какая кнопка была нажата внутри компонента и привязать к ней метод?
click? Или нужно снаружи понять? И как выглядит тип button?
да да, снаружи @Input() buttons: string[];
Я думаю нужно тип сделать, не string, а что то типа { text: ..., callback: ... } и с ним работать
а какой тип у callback? void | Function?
@Input() buttons: Array<{title: string, callback: any}>; buttons = [{ title: 'button1', callback: () => {alert('button1');} }]; <ng-container *ngFor="let button of buttons"> <button (click)='button.callback()' class="btn">{{ button.title }}</button>
если у него Function тип то ошибка появляется Type 'void' is not assignable to type 'Function'.ngtsc(2322)
спасибо но почему просто void не работает?
ну это ж не void таки, а колбэк
какую заглушку можно поставить похожую на: callback: () => {alert('button1');}? Потому что то что вы написали - выдает ошибку: Parser Error: Missing expected }
тоже самое что и он написал: [buttons] = [{ title: 'button1', callback: someMethod }, { title: 'button2', callback: () => {alert('button1');} }];
да, я просто добавил вторую кнопку на someMethod не ругается вот на button2 - да
упс :) здесь это внутри разметки
Обсуждают сегодня