我正在尝试在我的 Angular 2 应用程序中实现 owl-carousel。
我按照这个例子如何在Angular2中使用owl-carousel?它实际上适用于我的项目是异步更改(ng-content async change)的唯一问题。
当我的 owl-courosel 的内容发生变化(推荐者或批评者)时,通过在 plnkr 上实施解决方案,插件不会重新加载。所以我只看到一个项目列表,但它们不会滚动。
所以我有 nps-comments.component.html 调用轮播组件的地方:
<section class="purchasers comments" *ngIf="comments.promoters.length || comments.detractors.length">
<carousel class="promoters" *ngIf="comments.promoters.length" [options]="{ items: 1 }">
<p *ngFor="let promoter of comments.promoters">{{promoter}}</p>
</carousel>
<carousel class="detractors" *ngIf="comments.detractors.length" [options]="{ items: 1 }">
<p *ngFor="let detractor of comments.detractors">{{detractor}}</p>
</carousel>
</section>
然后是实际的 carousel.component.ts
import {
Component,
Input,
ElementRef
} from '@angular/core';
import 'jquery';
import 'owl-carousel';
@Component({
moduleId: module.id,
selector: 'carousel',
templateUrl: 'carousel.component.html',
styleUrls: ['carousel.component.css']
})
export class CarouselComponent {
@Input() options: Object;
private $carouselElement: any;
private defaultOptions: Object = {};
constructor(private el: ElementRef) { }
ngAfterViewInit() {
for (let key in this.options) {
if (this.options.hasOwnProperty(key)) {
this.defaultOptions[key] = this.options[key];
}
}
let outerHtmlElement: any = $(this.el.nativeElement);
this.$carouselElement = outerHtmlElement.find('.owl-carousel').owlCarousel(this.defaultOptions);
}
ngOnDestroy() {
this.$carouselElement.trigger('destroy.owl.carousel');
this.$carouselElement = null;
}
}
这是 carousel.component.html:
<div class="owl-carousel owl-theme">
<ng-content></ng-content>
</div>
任何帮助将非常感激。谢谢你。