angular - 无法捕获自定义事件

标签 angular angular2-template

我设法发出自定义事件,但似乎无法在另一个组件中捕获该事件。

这是发射器:

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

@Component({
    selector: 'x-hamburger-button',
    template: `
        <div (click)="toggleSidebar()">
           <i class="fa fa-bars">
              <a href="#"></a>
           </i>
        </div>
        `
})

export class HamburgerButton {
    @Output() toggled = new EventEmitter();
    toggleSidebar = function () {
        this.toggled.emit();
        console.log('toggled.emit()');
    };
}

这是接收组件:

import { Component } from 'angular2/core';
import { HamburgerButton } from './hamburger-button.component';

@Component({
    selector: "x-sidebar",
    template: `
        <div (toggled)="onToggled()" [ngClass]="{collapsed: collapsed}">
        </div>
        `
})

export class Sidebar {
    collapsed: boolean = false;
    onToggled = function () {
        this.collapsed = !this.collapsed;
        console.log('event caught');
    };
}

我在控制台上收到 toggled.emit(),但没有捕获事件。知道我错过了什么吗?

最佳答案

请仔细查看更改。
注意:此代码引用 TypeScript

export class HamburgerButton {
    @Output() toggled = new EventEmitter();
    toggleSidebar() {                  //changed
        this.toggled.emit('Angular2'); //value emitted

    };
}

@Component({
        selector: "x-sidebar",
        template: `
            <x-hamburger-button (toggled)="onToggled($event)" [ngClass]="{collapsed: collapsed}">               //changed
            </x-hamburger-button>      //changed
            `
    })


export class Sidebar {
    collapsed: boolean = false;
    onToggled(value) {                //changed
        this.collapsed = !this.collapsed;
        console.log(value);           //Angular2 <--------
    };
}

关于angular - 无法捕获自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36232078/

相关文章:

jquery - Angular4 - npm jQuery 错误 TS1005 : ',' expected

javascript - Webpack - 排除 node_modules 也保持独立的浏览器和服务器管理

javascript - 使用依赖于 ViewChildren 的属性时出错

angular - 如何在 Angular 2 中创建动态菜单?

angular - 子路由中的参数

html - ionic 2 : Dismiss loading animation when iframe is ready

angular - 从另一个模块引用组件

javascript - 如何更改按钮文本并禁用angular2中单击事件的按钮

angular - 多个对象到 HttpParams

angular 5 : templateRef. createEmbeddedView 不是函数