我正在使用swiper 库。在上面链接的 API 中,您可以找到mySwiper.activeIndex
返回当前选择的幻灯片。我想要做的是在幻灯片更改时更新我的服务,以便我的应用程序知道在其他部分选择了哪张幻灯片(通过共享服务)。
所以我想使用的是ngOnChanges
它假设检测组件的每一个变化,但它没有检测到幻灯片的变化,因为我的代码没有console.log
任何东西。代码:
import { Component, OnInit, AfterViewInit, OnChanges } from '@angular/core';
import Swiper from 'swiper';
import {TouchService} from "../../services/touch.service";
@Component({
selector: 'app-nav',
templateUrl: './nav.component.html',
styleUrls: [ './nav.component.scss' ]
})
export class NavComponent implements AfterViewInit, OnChanges, OnInit {
mySwiper: Swiper;
slides = [
'Slide1',
'Slide2',
'Slide3',
'Slide4',
'Slide5',
'Slide6'
];
constructor(private touchService: TouchService) {}
ngAfterViewInit() {
this.mySwiper = new Swiper('.nav', {
paginationClickable: false,
grabCursor: true,
loop: true,
slidesPerView: 3,
spaceBetween: 50
});
this.mySwiper.on('touchStart', () => {
this.touchService.triggerTouchStart();
});
this.mySwiper.on('touchEnd', () => {
this.touchService.triggerTouchStop();
});
}
ngOnChanges(changes) {
console.log(changes);
}
ngOnInit() {
setTimeout(() => {
alert(this.mySwiper.activeIndex);
}, 4000);
}
}
在此代码中,setTimeout 可以正常工作,并在应用加载 4 秒后向我显示当前选择的幻灯片。但这ngOnChanges(changes) {
似乎永远不会被解雇,因为我没有看到任何 console.logs。
为什么 ngOnChanges 不捕捉mySwiper
变化?我能做些什么来检测这些变化?