Javascript 如何在Angular 2中发出@Output事件
使用的角度2版本:2.0.0-alpha.44 我试图从一个组件发出一个输出信号。我跟着他走 .以下是我的组件代码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
@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");