我刚刚开始潜入一些基本的Angular 4,我一直在听一个emits 的事件.这里有一个非常简单的例子重现了这个问题(至少在我这边):
DateSenderComponent
是"广播"当前日期,然后由其母公司AppComponent
处理(见下文):
import { Component, Output } from '@angular/core';
import { EventEmitter } from "events";
@Component({
selector: 'app-date-sender',
template: '<button (click)="sendDate()">Send</button>'
})
export class DateSenderComponent {
@Output() dateSent = new EventEmitter();
sendDate(){
var dt = new Date();
console.log(dt);
this.dateSent.emit(dt.toString());
}
}
AppComponent
应该收听广播的日期事件:
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: '<app-date-sender (dateSent)="dateReceived($event)"></app-date-sender>'
})
export class AppComponent {
dateReceived(value){
console.log('Result: ', value);
}
}
从各种初学者教程中,我发现这是一种聆听事件的方式.然而,在加载页面时,我没有打印接收日期值,而是出现以下错误:
应用组件.html:1错误类型错误:实例[output.propName].订阅不是一种功能
在createDirectiveInstance(core.es5.js:10727)
在createViewNodes(core.es5.js:12086)
在callViewAction上(core.es5.js:12530)
在ExecuteComponentViewsAction(core.es5.js:12439)
在createViewNodes(core.es5.js:12113)
在createRootView(core.es5.js:11991)
在callWithDebugContext(core.es5.js:13206)
反对.debugCreateRootView[作为createRootView](core.es5.js:12666)
在组件工厂.创建(core.es5.js:9912)
在ComponentFactoryBoundToModule.创建(core.es5.js:3448)
不幸的是,我找不到任何关于这到底意味着什么的信息,我自己也无法理解.
有一件事似乎是一个提示:当我更改AppComponent
模板以侦听某个不会在任何地方发出的事件(例如<app-date-sender (someStringSent)="dateReceived($event)"></app-date-sender>
)时,错误就会消失.因此,实际的输出事件和监听它的模板之间似乎存在联系,这似乎是问题的原因.
谁能给我指出正确的方向吗?