, поскольку Swiper
предотвращает отправку внутреннего элемента DOM, вы можете использовать Event API от swiper для получения информации о том, что происходит внутри основного элемента Swiper.
Например, в вашем случае вы можете сделать что-то вроде этого:
this.mySwiper = new Swiper('.nav', {
paginationClickable: false,
grabCursor: true,
loop: true,
autoplay: 1000,
slidesPerView: 3,
spaceBetween: 50
});
this.mySwiper.on('touchStart', () => {
this.touchService.triggerTouchStart();
});
this.mySwiper.on('touchEnd', () => {
this.touchService.triggerTouchStop();
});
Вы можете добавить новую услугу в свое приложение, чтобы абстрагировать от остальной части вашего приложения этот трюк, который будет связан со всеми mousedown | события mouseup. ниже вы можете найти реализацию:
export class TouchService {
private _manualControl$: Subject<boolean>;
constructor() {
this._manualControl$ = new Subject();
// React to the document mouse event.
fromEvent(document, 'mousedown').subscribe(() => this.triggerTouchStart());
fromEvent(document, 'mouseup').subscribe(() => this.triggerTouchStop());
}
// Can be call manually to force new state.
triggerTouchStart(): void {
this._manualControl$.next(true);
}
triggerTouchStop(): void {
this._manualControl$.next(false);
}
get touch$(): Observable<boolean> {
return this._manualControl$.asObservable();
}
}
Теперь у вас есть наблюдаемые, которые реагируют на собственные события mousedown
и mouseup
, а также могут быть вызваны ручным вызовом API, таким как
this.mySwiper.on('touchStart', () => {
this.touchService.triggerTouchStart();
});
this.mySwiper.on('touchEnd', () => {
this.touchService.triggerTouchStop();
});
Наконец, вы можете использовать эту услугу следующим образом:
constructor(private touchService: TouchService) {
this.touchService.touch$.subscribe(e => this.holding = e);
}
Я не могу предложить вам тянуть запрос на ваш проект, потому что я не имею права делать это. Вы можете увидеть это в действии здесь
git remote add fork https://bitbucket.org/yghidouche/ng-hover-issue
git fetch fork issues_1