Есть два варианта, для которых вы можете go. Первый похож на ваш путь. Проблема в том, что вы проходите мероприятие один раз. Но вы хотите, чтобы триггер срабатывал при каждом его изменении:
@Input() set removeFile(data: boolean) { this.anyFunction(data); }
anyFunction(data) {
// do some code here
}
Второй вариант - создать службу (которую я вам рекомендую). Вы можете сделать это с помощью angular -cli (ng gs servicename).
Discussion.service.ts:
export class DiscussionService {
buttonClick: EventEmitter<boolean> = new EventEmitter();
constructor() { }
}
. Таким образом, вы создали службу с EventEmitter, который доступен для каждого компонента, который включает в себя службу. Вы можете узнать больше о EventEmitters здесь https://angular.io/api/core/EventEmitter. Чтобы подвести итог, вам просто нужно отправить событие по компоненту:
обсуждение.component.ts:
constructor(private discussionService: DiscussionService) { }
clickFkt() { this.discussionService.buttonClick.emit(true) }
обсуждение.component. html:
<input (click)="clickFkt()">
Теперь вы можете подписаться на каждый компонент вашего сервиса:
add-files.component.ts:
constructor(private discussionService: DiscussionService) { }
ngOnInit() {
this.discussionService.buttonClick.subscribe(click => {
this.anyFunction(click);
});
}
anyFunction(data) {
// do some code here
}