Angular 角度@Output&;事件发射器不工作

Angular 角度@Output&;事件发射器不工作,angular,Angular,我正在尝试将show的值从我的导航栏组件传递到我的应用程序根组件,我正在使用它来形成应用程序的基本布局。在navbar组件.ts中,我有: import { Component, Output, EventEmitter } from '@angular/core'; @Component({ selector: 'app-navbar', templateUrl: './navbar.component.html' }) export class NavbarComponent {

我正在尝试将
show
的值从我的导航栏组件传递到我的应用程序根组件,我正在使用它来形成应用程序的基本布局。在
navbar组件.ts中,我有:

import { Component, Output, EventEmitter } from '@angular/core';

@Component({
  selector: 'app-navbar',
  templateUrl: './navbar.component.html'
})
export class NavbarComponent {

    public show = true;
    @Output() showEvent = new EventEmitter<boolean>();

    constructor() { }

    sendToggle() {
        if (this.show === true) {
            this.show = false;
        } else {
            this.show = true;
        }
        this.showEvent.emit(this.show);
    }

}
<button type="button" class="btn btn-transparent ml-2 mr-auto"
    (click)="sendToggle()">
    <span class="fa fa-bars"></span>{{ show }}
</button>
<app-navbar></app-navbar>
<div id="wrapper">
    <nav (showEvent)="getToggle($event)" id="sidebar" [ngClass]="{show: show}">
        {{ show }}
        <app-sidebar></app-sidebar>
    </nav>
    <div id="content">
        <app-breadcrumb></app-breadcrumb>
        <router-outlet></router-outlet>
    </div>
</div>
然后在模板上,我有以下内容:

import { Component, Output, EventEmitter } from '@angular/core';

@Component({
  selector: 'app-navbar',
  templateUrl: './navbar.component.html'
})
export class NavbarComponent {

    public show = true;
    @Output() showEvent = new EventEmitter<boolean>();

    constructor() { }

    sendToggle() {
        if (this.show === true) {
            this.show = false;
        } else {
            this.show = true;
        }
        this.showEvent.emit(this.show);
    }

}
<button type="button" class="btn btn-transparent ml-2 mr-auto"
    (click)="sendToggle()">
    <span class="fa fa-bars"></span>{{ show }}
</button>
<app-navbar></app-navbar>
<div id="wrapper">
    <nav (showEvent)="getToggle($event)" id="sidebar" [ngClass]="{show: show}">
        {{ show }}
        <app-sidebar></app-sidebar>
    </nav>
    <div id="content">
        <app-breadcrumb></app-breadcrumb>
        <router-outlet></router-outlet>
    </div>
</div>

{{show}

因此,当我单击按钮时,我可以看到navbar组件中
show
的状态发生了变化,但是应用程序组件似乎没有收到消息。我到底做错了什么?

您应该将
showEvent
放在具有
@Output
装饰器的实际组件选择器
app navbar
上,而不是放在
nav
元素上:

<app-navbar (showEvent)="getToggle($event)"></app-navbar>

您的处理程序位于错误的元素上(nav而不是app navbar)


我有一个类似的问题,我把它放在正确的位置,无法解决这个问题