Вы можете использовать Rx JS s Subject
, ввести его в сервис, который вы вставите через конструктор как в компоненты кнопки, так и в таблицы. Реализация вашей службы может выглядеть следующим образом:
// service
export class TableService {
private event: Subject<void> = new Subject<void>();
public event$ = this.event.asObservable();
public emitEvent(event?: MouseEvent): void {
this.event.next();
}
}
Затем вы берете эту службу и вставляете ее в компонент кнопки:
// button component
export class Button {
constructor(private tableService: TableService) {}
update(): void {
this.tableService.emitEvent();
}
}
вы можете активировать update () Функция при нажатии в файле шаблона html. Затем реализуйте логику выбора c в своей таблице и просто используйте event$
, чтобы вызвать его:
// table component
export class Table {
constructor(private tableService: TableService) {
this.tableService.event$.subscribe(() => this.checkAll());
}
checkAll(): void {
// your selection logic goes here
}
}