Я пробовал Angular 9 и уже некоторое время застрял на правильном использовании @Output()
-декоратора и EventEmitter
-класса. По какой-то причине мое событие, похоже, не связано с непосредственным родительским компонентом моего дочернего компонента. Мой дочерний компонент называется NavbarComponent
и должен запускать событие toggletool
по нажатию кнопки. Соответствующие части navbar.component.ts
-файла выглядят так:
@Component({
selector: 'app-navbar',
templateUrl: './navbar.component.html',
styleUrls: ['./navbar.component.scss']
})
export class NavbarComponent implements OnInit {
@Output('toggletool') toggleEvent: EventEmitter<string> = new EventEmitter<string>();
...
toggle(id: string) {
this.toggleEvent.emit(id);
}
}
Функция toggle(...)
определенно вызывается и параметр id
установлен правильно. Я сейчас пытаюсь поймать событие в моем AppComponent
. Шаблон выглядит так:
<app-location-tool [isActive]="toolIsActive('locationtool')" (toggletool)="toggleTool($event)">
</app-location-tool>
Файл app.component.ts
объявляет функцию toggleTool(...)
, которая выглядит следующим образом:
toggleTool(event) {
console.log(event);
}
Однако эта функция никогда не вызывается (судя по отсутствующим выводом на консоль), и я не знаю почему. Наверное, я упустил из виду небольшую ошибку и надеюсь, что вы, ребята, сможете мне помочь.
Заранее спасибо.