Angular2:我可以使用箭头函数而不是方法处理@Output返回值吗
我有一个Angular2应用程序,它有一个父组件(AppComponent)和多个子组件。其中一人(DnDContainer)具有@Output变量是这样的:Angular2:我可以使用箭头函数而不是方法处理@Output返回值吗
@Output() onDataUpdate: EventEmitter<any> = new EventEmitter();
内DnDContainer,有一个在它的单击事件下面的代码按钮:
onSave(e) {
this.onDataUpdate.emit(this.data);
// this.data is just a simple string array
}
然后,从AppComponent,有几个DnDContainer组件(它们的选择器是'dnd-container')。我想倾听他们的'onDataUpdate'输出并将其分配给不同的数组(targetItemsA,targetItemsB等)。我试图用一个简单的语法是这样的:
<dnd-container (onDataUpdate)="($event) => {targetItemsA = $event}"></dnd-container>
<dnd-container (onDataUpdate)="($event) => {targetItemsB = $event}"></dnd-container>
但它不工作,所以我不得不只设定阵列到另一个创建的具体方法,如:
<dnd-container [onDataUpdate)="update('A', $event)"></dnd-container>
<dnd-container [onDataUpdate)="update('B', $event)"></dnd-container>
的方法是这样的:
update(which, data) {
switch (which) {
case 'A':
this.targetItemsA=data;
break;
case 'B':
this.targetItemsB=data;
break;
case 'C':
this.targetItemsC=data;
break;
(ETC...)
}
}
有没有什么简单的方法来做到这一点(像一个带箭头的功能我在开始时指出)?对不起,如果它太基本了,我对Angular2很陌生。
由于提前,
PS:在tsconfig.spec.json文件,我已经改变了“目标”属性“ES6”,但它仍然无法正常工作。
做以下修改:
@Output() onDataUpdate: EventEmitter<string[]> = new EventEmitter<string[]>();
尽量避免使用any
如果你知道将要发射的类型。
在应用程序组件中,您有两个选择:创建一个函数来处理事件(清洁器模板),或直接在其中进行操作。显然你不希望创建一个方法,所以下面应该工作:
<dnd-container (onDataUpdate)="targetItemsA = $event"></dnd-container>
这工作就像一个魅力,非常感谢你! – Fel
很高兴帮助:),如果这解决了您的问题,请将其标记为答案,以便其他人可以看到它,如果他们遇到您的问题 –
' DND容器>' –
echonax