Angular 9: почему мой пользовательский EventEmitter не работает? - PullRequest
0 голосов
/ 15 марта 2020

Я пробовал 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);
}

Однако эта функция никогда не вызывается (судя по отсутствующим выводом на консоль), и я не знаю почему. Наверное, я упустил из виду небольшую ошибку и надеюсь, что вы, ребята, сможете мне помочь.

Заранее спасибо.

1 Ответ

2 голосов
/ 15 марта 2020

Селектор вашего компонента app-navbar, но вы использовали app-location-tool

...