我正在尝试将jquery插件jstree包装到角度组件中。我的代码如下。我有基本的演示文稿,但我想知道包装jstree发出的许多事件的最佳方法是什么。
我可以复制@output'onSelection'发射器并拥有许多不同的事件发射器(onLoaded,onReady,onLoadNode等),但不确定这是否是正确/惯用的处理方式。 Jstree对每个事件都有不同的参数,因此不确定如何处理单个发射器,其中不同的事件将具有不同数量的args,或者即使这是一种合理的方法。
版本:“@ angular / cli”:“1.0.0-rc.2”,“@ angular / compiler-cli”:“^ 2.4.0”,“jstree”:“^ 3.3.3”
import {Component, OnInit, ViewChild, ElementRef, AfterViewInit, Input, Output, EventEmitter} from '@angular/core';
import * as jQuery from 'jquery';
import 'jstree';
@Component({
selector: 'angular-jstree',
templateUrl: 'angular-jstree.component.html',
styleUrls: ['angular-jstree.component.css'] ,
})
export class AngularJstreeComponent implements OnInit, AfterViewInit {
@ViewChild('jstree') element: ElementRef;
@Input() jstreeData : Object = {};
@Output() onSelection: EventEmitter<Object> = new EventEmitter<Object>();
constructor() { }
ngOnInit() {
}
ngAfterViewInit() {
jQuery(this.element.nativeElement).jstree(this.jstreeData);
jQuery(this.element.nativeElement).on("select_node.jstree", (node, selected, event) => {
this.onSelection.emit({node: node, selected: selected, event: event});
});
}
}