2017-05-29 42 views
1

作为后续于问题:Emit event from Directive to Parent element : Angular2从结构指令角父组件2发射事件不起作用

它看起来时的结构指令发出事件等时,父组件不接收它。

@Directive({ selector: '[appWidget]' }) 
export class WidgetDirective implements OnInit{ 
@Output() wdgInit: EventEmitter<any> = new EventEmitter(); 
@Input() set appWidget (wdg: any) { 
    //display stuff 
} 
ngOnInit { 
    this.wdgInit.emit(); 
} 

widget.component.html:

<ng-container *ngFor="let wdg of widgets">  
    <div *appTwitterWidget="wdg" > 
    <ng-container> 

widgetContainer.component.html:

<app-widget [widgets]="widgetList" (wdgInit)="containerDoSomthing()"></app-widget> 

在这种情况下,我觉得containerDoSomthing()永远不会获取调用。

回答

0

我相信不可能将EventEmitter添加到结构指令中,因为指令引用的本地元素始终是注释!

这可能是由于这样一个事实,一个事件永远不会在DOM中生成......尽管属性指令并不是问题,但它们是坐在适当的DOM元素上的。

0

这是可能的。问题是当前的Angular 5.2.6仍然不支持@Output绑定的结构指令,如果与糖化星号(*)语法一起使用(请参阅GitHub issue),就像问题中一样。

为了使它工作,你必须要改变它去sugarized形式(see here)是这样的:

<ng-template [appWidget]="wdg" (wdgInit)="containerDoSomthing($event)"></ng-template>