Ответ @nimeresam - хороший совет - использование @Output
- это нелепый способ для достижения этой цели.
Однако стоит отметить, что причина, по которой ваше оригинальное решение не работает, связана с тем, как javascript обрабатывает контекст this
.
Запись (click)="updateUnread()"
равносильна произнесению this.updateUnread()
с этим значением NotificationMenuComponent
- так как служба извещения не существует в NotificationMenuComponent, вы получите неопределенную ошибку.
Чтобы использовать контекст родительского компонента, вам необходимо связать контекст с функцией updateUnread
перед передачей его в дочерний компонент.
Это может быть достигнуто либо путем преобразования функции в функцию стрелки, либо с помощью Function.bind
См .:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects / Function / bind
Обычно хорошей идеей является включение опции машинописи для --noImplicitThis
, чтобы помочь отлавливать эти ошибки (хотя и не уверены, обнаружит ли она это в этом случае)