Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Angular 2中发出@Output事件_Javascript_Angular - Fatal编程技术网

Javascript 如何在Angular 2中发出@Output事件

Javascript 如何在Angular 2中发出@Output事件,javascript,angular,Javascript,Angular,使用的角度2版本:2.0.0-alpha.44 我试图从一个组件发出一个输出信号。我跟着他走 .以下是我的组件代码 @Component({ selector: 'summary' }) @View({ directives: [NgFor, NgIf, ROUTER_DIRECTIVES, LogoutComponent, BarChartDirective, SunburstChartDirective], templateUrl: 'view/summary-com

使用的角度2版本:2.0.0-alpha.44

我试图从一个组件发出一个输出信号。我跟着他走 .以下是我的组件代码

@Component({
    selector: 'summary'
})
@View({
    directives: [NgFor, NgIf, ROUTER_DIRECTIVES, LogoutComponent, BarChartDirective, SunburstChartDirective],
    templateUrl: 'view/summary-component.html'
})
export class SummaryComponent {
    @Output() loadSummary: EventEmitter = new EventEmitter();
    project: Project;
    data: any;

    constructor(public http: Http,
            public router: Router,
            public xxxGlobalService: XXXGlobalService) {
        console.log("SummaryComponent: Created");
        this.getSummary()  
    }

    getSummary() {
        this.project = this.xxxGlobalService.getOpenedProject();
        var url = "/project_summary?username="+ this.xxxGlobalService.getUser().name + "&project_id=" + this.project.id;
        this.http.get(url)
                 .map(res => res.json())
                 .subscribe(
                     data => this.extractData(data),
                     err => this.logError(err),
                () => console.log('SummaryComponent: Successfully got the summary')
        );
    }

    extractData(data) {
        this.data = data;
        console.log("SummaryComponent: Emitting loadSummary event");
        this.loadSummary.next("event");
    }
}
然而,当我尝试分配EventEmitter时(在下面一行),我得到一个错误,说“TypeError:router_1.EventEmitter不是一个函数”

我检查了一下,把这条线改成

@Output() loadSummary: EventEmitter;
但是loadSummary似乎始终没有定义如何发出输出信号?请帮助

从beta.0版(可能更早)开始,现在是
angular2/core

使用
Emit()
发出事件:

@Output()加载摘要:EventEmitter=neweventemitter();
...
此.loadSummary.emit(“事件”);

EventEmitter
必须从
angular2/angular2
导入,而不是从
angular2/router
@EricMartinez导入。谢谢。对于Angular2 beta 3,使用“Angular2/core”的导入EventEmitter,如果从构造函数发出,则发出的事件似乎丢失。显然,@输出在构造函数之后才被绑定。
@Output() loadSummary: EventEmitter;
@Output() loadSummary: EventEmitter<any> = new EventEmitter();
...
this.loadSummary.emit("event");