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”,但它仍然无法正常工作。

+0

' DND容器>' – echonax

做以下修改:

@Output() onDataUpdate: EventEmitter<string[]> = new EventEmitter<string[]>(); 

尽量避免使用any如果你知道将要发射的类型。

在应用程序组件中,您有两个选择:创建一个函数来处理事件(清洁器模板),或直接在其中进行操作。显然你不希望创建一个方法,所以下面应该工作:

<dnd-container (onDataUpdate)="targetItemsA = $event"></dnd-container> 
+0

这工作就像一个魅力,非常感谢你! – Fel

+0

很高兴帮助:),如果这解决了您的问题,请将其标记为答案,以便其他人可以看到它,如果他们遇到您的问题 –