Что ж, при использовании плагинов jQuery обратите внимание на две вещи:
- каждое происходящее событие (каждое) будет вызывать обнаружение изменений.Поэтому, если плагин jQuery не «образован», вы рискуете столкнуться с проблемами производительности.Чтобы ослабить это, вы можете запустить код jQuery «вне Angular».
- это все еще плагин jQuery, поэтому вы должны использовать глобальный объект jQuery для доступа к нему.
Сказав, что, Я бы попробовал следующее:
// this line tells TypeScript that something called "$" exists
declare let $: any;
// I'm assuming you omitted the "component" declaration
export class ProductComponent implements AfterViewInit, OnInit {
@ViewChild('elevatezoomBig') elevatezoomBig : ElementRef;
constructor(private ngZone: NgZone) {}
ngAfterViewInit(): void {
ngZone.runOutsideAngular(() => {
$(this.elevatezoomBig.nativeElement).elevateZoom({
borderSize: 1,
lensFadeIn: 200,
cursor: 'crosshair',
zoomWindowFadeIn: 200,
loadingIcon: true,
zoomWindowOffety: -50,
zoomWindowOffetx: 50,
zoomWindowHeight: 530,
responsive: true
});
})
}
}
Редактировать: синтаксис constructor(private ngZone: NgZone)
позволяет объявить свойство с именем ngZone
, для которого автоматически устанавливается значение параметра конструктора ngZone
.См. здесь в разделе Свойства параметров .
Когда вы используете плагин jQuery, вам необходимо обработать DOM.Реализация компонента (так называемый жизненный цикл) состоит из трех основных шагов: конструктор -> среда выполнения заполняет входные свойства -> ngOnInit
-> шаблон обрабатывается и инициализируется DOM -> ngOnAfterViewInit
.Если вы не очень хорошо знаете эту последовательность, сделайте себе одолжение и прочитайте здесь , как только сможете.Поверь мне, ты поблагодаришь меня позже.
Сказав это, нам нужно вызвать код инициализации плагина в ngAfterViewInit
.