2016-04-29 3 views
7

Я использовал Perfect Scrollbar, а затем начал использовать Angular 2, но я не могу найти подобное дополнение. Что было бы правильным способом реализовать идеальную полосу прокрутки в проекте Angular 2?Angular2 прокручиваемый контент

Я последовал this great example, но я вроде потерянным, как изменить в ngOnInit()

jQuery(this.elementRef.nativeElement).draggable({containment:'#draggable-parent'}); 

к этому =>

$(function() { 
    $('#Demo').perfectScrollbar(); 

ответ

6

Вы можете инициализировать идеальный скроллбар в пользовательской директивы с ванильным JS (с он поддерживает это ;-)) следующим образом:

import Ps from 'perfect-scrollable'; 

@Directive({ 
    selector: '[ps]' 
}) 
export class PsDirective { 
    constructor(private elementRef:ElementRef) { 
    } 

    ngAfterViewInit() { 
    Ps.initialize(this.elementRef.nativeElement); 
    } 
} 

Вы можете использовать/применять его, как это:

@Component({ 
    selector: 'app' 
    template: ` 
    <div ps class="container"> 
     <div class="content"></div> 
    </div> 
    `, 
    styles: [` 
    .content { 
     background-image: url('https://noraesae.github.io/perfect-scrollbar/azusa.jpg'); 
     width: 1280px; 
     height: 720px; 
    } 

    .container { 
     position: relative; 
     margin: 0px auto; 
     padding: 0px; 
     width: 600px; 
     height: 400px; 
    } 
    `], 
    directives: [ PsDirective ] 
}) 
export class App { 
} 

Библиотека должна быть настроена перед таким образом (CSS и SystemJS):

<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.perfect-scrollbar/0.6.11/css/perfect-scrollbar.min.css"/> 

<script> 
    System.config({ 
    transpiler: 'typescript', 
    typescriptOptions: { emitDecoratorMetadata: true }, 
    map: { 
     'perfect-scrollable': 'https://cdnjs.cloudflare.com/ajax/libs/jquery.perfect-scrollbar/0.6.11/js/min/perfect-scrollbar.min.js' 
    }, 
    packages: { 
     'app': { 
     defaultExtension: 'ts' 
     } 
    } 
    }); 
    System.import('app/main') 
     .then(null, console.error.bind(console)); 
</script> 

Смотрите эту plunkr: https://plnkr.co/edit/S8DJpHFVNFioklTl1xg6?p=preview.

+1

Здравствуйте я попробовал, но он говорит совершенной полосы прокрутки не имеет экспорта не по умолчанию – axcl

+0

Вы можете написать файл определения типа для совершенной -scrollbar, или вы можете использовать [Angular2-drag-scroll] (https://github.com/bfwg/angular2-drag-scroll), который является библиотекой Angular2 для перетаскивания прокрутки контента. –

0

Angular2-drag-scroll это библиотека вы ищете

пример

Использование:

<style> 
    .demo-one { 
    height: 260px; 
    background-color: #FFFFFF; 
    } 
</style> 

<div drag-scroll drag-scroll-y-disabled="true" scrollbar-hidden="true" > 
    <img *ngFor="let image of imagelist" [src]="'assets/img/' + image" /> 
</div> 

я применяю «перетащить прокрутки» в DIV, так что все в сторону этого DIV будет перетаскиваемым и имеет переполнение атрибута: прокрутка и т. д.

Настройка «drag-scroll-y-disabled» на true отключит прокрутку/перетаскивание по оси Y.

Установка «скроллинг-скроллер» в true скроет полосу прокрутки.

Scroll

Github страница: https://github.com/bfwg/angular2-drag-scroll

демо-сайт: https://bfwg.github.io/angular2-drag-scroll/

+0

Это устарело с угловым 4. –

+1

@ KrishnaKarki Последняя версия совместима с угловым 4. –