我正在使用 Angular 2 项目中的剑道。
正确设置小部件没有问题:
ngOnInit() {
let options = inputsToOptionObject(KendoUIScheduler, this);
options.dataBound = this.bound;
this.scheduler = $(this.element.nativeElement)
.kendoScheduler(options)
.data('kendoScheduler');
}
当它运行时,插件会修改 DOM(据我所知,不会修改由 angular2 维护的影子 DOM)。我的问题是,如果我想在插件内部的任何地方使用组件,比如在模板中,Angular 不知道它的存在并且不会绑定它。
例子:
public views:kendo.ui.SchedulerView[] = [{
type: 'month',
title: 'test',
dayTemplate: (x:any) => {
let date = x.date.getDate();
let count = this.data[date];
return `<monthly-scheduler-day [date]="test" [count]=${count}"></monthly-scheduler-day>`
}
}];
每月计划日课程:
@Component({
selector: 'monthly-scheduler-day',
template: `
<div>{{date}}</div>
<div class="badge" (click)=dayClick($event)>Available</div>
`
})
export class MonthlySchedulerDayComponent implements OnInit{
@Input() date: number;
@Input() count: number;
constructor() {
console.log('constructed');
}
ngOnInit(){
console.log('created');
}
dayClick(event){
console.log('clicked a day');
}
}
是否有一种“正确”的方式将这些组件绑定到小部件创建的标记内?我已经设法通过侦听来自小部件的绑定事件然后遍历它创建的元素并使用 DynamicComponentLoader 来做到这一点,但感觉不对。