私はかなりの間今これを理解しようとしてきました。親がクリックイベントをリッスンするとき、ngTemplateOutletの内部でチェックボックスが機能しない - バグ?
基本的に、私はng-template
に1つのチェックボックスを含んでいます。私は<ng-container *ngTemplateOutlet>
を使ってそれをコンポーネントに含めます。 ng-container
は、クリックイベントリスナーを持つdiv
に含まれています。リスナーは現在何もしません。ただ空の関数です。
これを実行すると、すべてが有効です。チェックボックスをオンまたはオフにすることができます。
はここでテンプレートコードです:私はngTemplateOutlet
にcontext
を追加する場合
<div (click)="handleClick($event)">
<ng-container *ngTemplateOutlet="foo"></ng-container>
</div>
<ng-template #foo>
<input type="checkbox">
</ng-template>
、しかし、これは不思議なチェックボックスを破ります。私はこれまでテンプレートコード更新するのであれば、:
<div (click)="handleClick($event)">
<ng-container *ngTemplateOutlet="foo; context: context"></ng-container>
</div>
<ng-template #foo>
<input type="checkbox">
</ng-template>
を、私は私のコンポーネントクラス(今のちょうど空のオブジェクト)にcontext
というプロパティを持って、私はそれをクリックすると、チェックボックスはもはや確認されなかっます。
おそらく、単なる一例にリンクしやすいだろう:
https://plnkr.co/edit/LHxdP3XBifuYbgmo3ptm
これは間違いなく、この問題を引き起こしているcontext
です。 context
を削除すると、チェックボックスが再び機能します。
EDIT:(click)
リスナーを含むdiv
からリスナーを削除すると、チェックボックスも正しく機能します。 context
を提供すると、イベントの伝播に何らかの影響を与えることができますか?
これは角度のバグでしょうか?それとも、私は行方不明のいくつかの概念はありますか?
ありがとうございます!
マイ空のコンテキストを設定しているためです – Vega
@Vegaコンテキストにデータを追加しても、私はまだ同じ動作をします。 –