Wie zu sprudeln angular2 benutzerdefiniertes Ereignis
Übergeordneten Vorlage:
<ul>
<tree-item [model]="tree" (addChild)="addChild($event)"></tree-item>
</ul>
Baum Element Vorlage:
<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>
Für das Beispiel oben, ein Elternteil erhält addChild Ereignis nur aus der root-tree-Element (sofortige Kind). Ist es möglich, Blasen zu bilden addChild Veranstaltung aus jedem tree-Element?
Ich bin mit Winkel-2.0.0-rc.0.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ereignisse aus
EventEmitter
unterstützen nicht sprudeln.Können Sie entweder
element.dispatchEvent()
Feuer ein DOM-Ereignis, die Blasen, oder das verwenden einer shared-service-wie ein Nachrichten-bus.Siehe auch https://angular.io/docs/ts/latest/cookbook/component-communication.html
element.dispatchEvent()
ist für. Winkel schlägt vor, die Nutzung eines gemeinsamen Dienstes statt DOM-Ereignisse. Ein DOM-Ereignis verursachen können (change detection) für die ganze app, während ein Dienst mit einer beobachtbaren führt nur dazu, dass change detection) für die Komponente, die abonniert, um das zu beobachten.$('body').on('contextmenu', 'a.context', myFunction)
würde ich eher binden Sie das Ereignis, um den Körper anstelle des a-Tags. Sie sagen, dass dieser Ansatz nicht möglich ist, in Angular2?dispatchEvent()
überall? Ich schaute auf die Module Quelle in meinem Projekt, und Sie sind alle mit den systemeigenennew Event
. Ich hatte erwartet, Winkel zu haben, die ähnliche Funktionalität wie jQuery in diesem Bereich:.on
,.dispatch
, die sehr nützlich sind.element.dispatchEvent()
keine Antwort auf die Frage? DOM-Ereignisse Blase, und Sie können hören Sie, wie die normalen Eckigen Veranstaltungen. Auch Eckige nicht bubble Veranstaltungen, weil es eine schlechte Idee, aus Gründen der Leistung und es gibt eine bessere Möglichkeit zur Kommunikation zwischen den Komponenten wie gemeinsame Dienste mit Observablen. Die verlinkte Seite geht in die details.Kam ich hier nach einer Lösung suchen, und ich fand einen auf meine eigenen. Auf Ihrem
tree-item
können Sie fügen Sie einen Ereignishandler wie folgt:und in der Komponente.ts:
Dadurch wird der event zu emittieren, die auf dem übergeordneten element, die vergeht, bis die Kette den ganzen Weg bis zum root-element. Sie können sogar benutzerdefinierte sprudelnden Logik, indem er die Veranstaltung, bevor Sie wieder Strahlen Sie.