Comment bulle jusqu'angular2 événement personnalisé
Modèle Parent:
<ul>
<tree-item [model]="tree" (addChild)="addChild($event)"></tree-item>
</ul>
Des éléments de l'arborescence du modèle:
<li>
<div>{{model.name}}
<span [hidden]="!isFolder" (click)="addChild.emit(model)">Add Child</span>
</div>
<ul *ngFor="let m of model.children">
<tree-item [model]="m"></tree-item>
</ul>
</li>
Pour l'exemple ci-dessus, le parent reçoit addChild événement uniquement à partir de la racine de l'arbre-élément (immédiat de l'enfant). Est-il possible de remonter jusqu'addChild événement à partir de n'importe quel arbre-élément?
Je suis à l'aide angulaire 2.0.0-rc.0.
Vous devez vous connecter pour publier un commentaire.
Événements de
EventEmitter
ne supportent pas de bulles.Vous pouvez soit utiliser
element.dispatchEvent()
à feu d'un DOM événement bulles, ou de l'utilisation d'un service partagé comme un bus de message.Voir aussi https://angular.io/docs/ts/latest/cookbook/component-communication.html
element.dispatchEvent()
est pour. Angulaire suggère d'utiliser un service partagé au lieu d'événements DOM. Un DOM l'événement peut provoquer la détection de changement de courir pour l'ensemble de l'application, tandis qu'un service avec une observable que les causes de la détection de changement de courir pour le composant qui s'abonne à l'observable.$('body').on('contextmenu', 'a.context', myFunction)
je préfère lier l'événement pour le corps au lieu de la balise. Vous dites que cette approche n'est pas possible dans Angular2?dispatchEvent()
n'importe où? J'ai regardé les modules source dans mon projet et ils sont tous à l'aide de la maternellenew Event
. Je m'attendais Angulaire avoir les mêmes fonctionnalités que celui de jQuery dans ce domaine:.on
,.dispatch
, ce qui est extrêmement utile.element.dispatchEvent()
pas répondre à la question? DOM événements de la bulle internet, et vous pouvez les écouter comme d'habitude Angulaire des événements. Aussi Angulaire n'est pas de bulle d'événements, car il est considéré comme une mauvaise idée pour des raisons de performances et il y a une meilleure façon de communiquer entre les composants tels que les services partagés avec les phénomènes Observables. La page va dans les détails.Je suis venu ici à la recherche d'une solution, et j'ai trouvé sur mon propre. Sur votre
tree-item
, vous pouvez ajouter un gestionnaire d'événements comme:et dans votre composant.ts:
Ce sera la cause de l'événement à émettre sur l'élément parent, qui passe jusqu'à la chaîne tout le chemin jusqu'à l'élément racine. Vous pouvez même définir un bouillonnement de la logique par la transformation de l'événement avant de ré-émission.