As a follow up to question: Emit event from Directive to Parent element : Angular2
It looks like when a structural directive emits an event, the parent component does not receive it.
@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>
In this case I find containerDoSomthing() never getting called.
It's possible. The issue is that current Angular 5.2.6 still doesn't support @Output
binding for structural directives if used with the sugared asterisk (*) syntax (see GitHub issue) like in the question.
To make it work you have to transform it to de-sugarized form (see here) like this:
<ng-template [appWidget]="wdg" (wdgInit)="containerDoSomthing($event)"></ng-template>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With