2017-05-29 5 views
1

を動作しません:Emit event from Directive to Parent element : Angular2EMITイベントの角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は、疑問符のようにsugaredアスタリスク(*)の構文(GitHub issueを参照)で使用すると、構造ディレクティブのバインドを@Outputでサポートしていないという問題があります。

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

それはあなたがこのようにフォーム(see here)を-sugarized解除するためにそれを変換する必要が動作するようにするには

関連する問題