作为后续问题:Emit event from Directive to Parent element : Angular2

看起来当结构指令发出事件时,父组件不会接收该事件。

@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()。

最佳答案

这是可能的。问题在于,当前的Angular 5.2.6如果像问题中那样使用含糖的星号(*)语法(请参阅GitHub issue),则仍不支持@Output绑定(bind)结构指令。

为了使其工作,您必须将其转换为脱糖形式(see here),如下所示:

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

10-04 16:01