أنا أرسل ...
هل تريد طلب ميزة أو الإبلاغ عن خطأ ؟
هل من الممكن بدء السحب من فهرس آخر غير 0؟
ما هو السلوك الحالي؟
في الوقت الحالي ، يبدأ السحب التمرير من أول صورة / مكون افتراضيًا.
ما هو الدافع / حالة الاستخدام لتغيير السلوك؟
سيكون من الجيد اختيار الفهرس حيث تبدأ عملية السحب (عند التحميل).
يمكنك بالفعل تحقيق إعداد الفهرس الأولي عن طريق استدعاء moveTo
في كتلة `ngAfterViewInit. تأكد من إنهاء المكالمة بـ setTimeout (() => {...} ، 0) ؛
علي سبيل المثال:
@ViewChild('nav', {read: DragScrollComponent}) ds: DragScrollComponent;
ngAfterViewInit() {
setTimeout(() => {
this.ds.moveTo(3);
}, 0);
}
حاولت بالفعل .. ، للأسف أتلقى هذا الخطأ في كل مرة:
core.js:1673 ERROR TypeError: Cannot read property '_elementRef' of undefined
at DragScrollComponent.push../node_modules/ngx-drag-scroll/lib/ngx-drag-scroll.js.DragScrollComponent.maximumIndex (ngx-drag-scroll.js:415)
at DragScrollComponent.push../node_modules/ngx-drag-scroll/lib/ngx-drag-scroll.js.DragScrollComponent.moveTo (ngx-drag-scroll.js:214)
at myComponent.component.ts:141
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
at Object.onInvokeTask (core.js:3815)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
at push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask (zone.js:496)
at ZoneTask.invoke (zone.js:485)
at timer (zone.js:2054)
هل تتصل بـ moveTo
في نطاق ngAfterViewInit
block؟ يمكن استدعاء طريقة moveTo
عندما يكون عنصر حلقة تمرير التمرير مرئيًا على الصفحة.
أو يمكنك إضافة القليل من التأخير والمحاولة مرة أخرى مثل:
setTimeout(() => {
this.ds.moveTo(3);
}, 1000);
دعنا نذهب للعمل.
فعلت. ولكن مع انتهاء مهلة 1 ثانية ، يعمل الآن! شكرا للمساعدة ، على الرغم من أنها متطرفة بعض الشيء.
حسنًا ، بدون النظر إلى الكود ، لا يمكنني معرفة سبب عدم نجاح ngAfterViewInit
من أجلك. أود أن أقول استخدام setTimeout
في الوقت الحالي حتى يتم إيقاف هذه الميزة. العلاقات العامة أكثر من موضع ترحيب.
يمكنك بالفعل تحقيق إعداد الفهرس الأولي عن طريق استدعاء
moveTo
في كتلة `ngAfterViewInit. تأكد من إنهاء المكالمة بـ setTimeout (() => {...} ، 0) ؛
علي سبيل المثال:@ViewChild('nav', {read: DragScrollComponent}) ds: DragScrollComponent; ngAfterViewInit() { setTimeout(() => { this.ds.moveTo(3); }, 0); }
مرحبا الرجاء إضافة هذه الميزة في الوثائق.
إذا استخدمت هذا الحل ، فسيرى المستخدم الرسوم المتحركة مع انتقال العنصر الأول إلى العنصر المحدد.
أود أن أقترح أدناه. هل تعتقد إذا كان على ما يرام؟
ngAfterViewInit(){
setTimeout(()=>{
this.ds.currIndex = 3;
this.ds._elementRef.nativeElement.children[0].scrollLeft = someValue;
}, 10);
}
التعليق الأكثر فائدة
يمكنك بالفعل تحقيق إعداد الفهرس الأولي عن طريق استدعاء
moveTo
في كتلة `ngAfterViewInit. تأكد من إنهاء المكالمة بـ setTimeout (() => {...} ، 0) ؛علي سبيل المثال: