我的Angular应用程序中有一个父/子组件,当单击表中的行时,子组件会向父组件发出事件。
子组件配置有输出事件发射器,如下所示:
@Output('rowSelect') rowSelect = new EventEmitter<any>();
onSelect($event, rowIndex) {
if ($event.source.checked) {
this.index =
rowIndex;
this.rowSelect.emit({'tenant': this.tenant, 'row': $event.source.value, 'index': this.origRowIndex.indexOf($event.source.value)});
return;
}
else {
this.rowSelect.emit({'row': {'sdwanprofile': 'UNCHECKED'}});
}
}
父组件正在模板中绑定事件发射器,如下所示:
<fuse-predefined>
(rowSelect) = "onButtonDisplay($event)">
</fuse-predefined>
这一直很好,直到我升级到Angular 6.1.1
当我在父组件上console.log验证EventEmitter负载时,它不会显示任何发出的数据。如果我在子组件中console.log,我可以看到有效负载。
所以看起来Output((并没有被发送到父组件。
以下是Angular软件包的当前版本:
Angular CLI: 6.1.2
Node: 10.7.0
OS: darwin x64
Angular: 6.1.1
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
Package Version
------------------------------------------------------------
@angular-devkit/architect 0.7.2
@angular-devkit/build-angular 0.7.2
@angular-devkit/build-optimizer 0.7.2
@angular-devkit/build-webpack 0.7.2
@angular-devkit/core 0.7.2
@angular-devkit/schematics 0.7.2
@angular/cdk 6.4.2
@angular/cli 6.1.2
@angular/flex-layout 6.0.0-beta.17
@angular/material 6.4.2
@angular/material-moment-adapter 6.4.2
@ngtools/webpack 6.1.2
@schematics/angular 0.7.2
@schematics/update 0.7.2
rxjs 6.2.2
typescript 2.9.2
webpack 4.9.2
我已经查看了发布说明,没有发现任何已知的问题。Angular 6.1.x上有什么东西会破坏它吗?
提前谢谢。
这是一个简单的语法错误:
输出事件应在打开标签内,如下所示:
<fuse-predefined (rowSelect)="onButtonDisplay($event)">
</fuse-predefined>
不确定它是如何更改的,可能是IDE格式化HTML代码造成的。