Почему привязка данных не работает в Angular 13?

Я создал событие в своем компоненте заголовка и пытаюсь прослушать его в компоненте приложения, но оно не работает должным образом.

В header.component.html при нажатии на «Рецепты» он отправляет строку «рецепт» в метод «onSelect()», а при нажатии на «Список покупок» он отправляет строку «список покупок» в метод «onSelect()».

          <li><a href = "#" (click) = "onSelect('recipe')"> Recipes</a></li>
          <li><a href = "#" (click) = "onSelect('shopping-list')"> Shopping List</a></li>
     

В header.component.ts я создал событие "featureSelected", которое передает данные, независимо от того, что мы получаем в методе "onSelect()".

 @Output() featureSelected = new EventEmitter<string>();

   onSelect(feature:string){
   this.featureSelected.emit(feature);
  }

Теперь мы перечисляем событие «featureSelected» в app.component.html, если оно выдает строку «рецепт», которую мы загружаем, компонент рецепта, в противном случае мы загружаем компонент «список покупок».

<app-header> (featureSelected) = "onNavigate($event)"</app-header>
<div class = "container">
  <div class = "row">
    <div class = "col-md-12">
     
    <app-recipes *ngIf = "loadedFeature === 'recipe'"></app-recipes>
      <app-shopping-list *ngIf = "loadedFeature !== 'recipe'"></app-shopping-list>
      </div>
  </div>
</div>

app.component.ts

 loadedFeature='recipe';

 onNavigate(feature:string){
   this.loadedFeature=feature;
}

Не загружается компонент списка покупок при нажатии на «Список покупок». Я думаю, что слушатель работает неправильно, хотя код выглядит нормально. Пожалуйста, помогите мне найти проблему и дайте мне знать, если потребуется дополнительная информация.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
<app-header> (featureSelected) = "onNavigate($event)"</app-header>

Во-первых, это не правильно. Вам нужно иметь метод вывода внутри заголовка приложения, как это.

<app-header (featureSelected) = "onNavigate($event)"> </app-header>

И с этим вы можете получить доступ к onNavigate($event) и сохранить его в каком-то свойстве.

Есть stackblitz с рабочим примером StackBlitzДемо

Если это поможет, отметьте это как ответ, пожалуйста.

Другие вопросы по теме