Ngx-drag-scroll: Iniciando ngx-drag-scroll do índice especificado

Criado em 21 out. 2018  ·  7Comentários  ·  Fonte: bfwg/ngx-drag-scroll

  • Estou enviando um...

    • [ ] relatório de erro
    • [x] solicitação de recurso
    • [ ] solicitação de suporte => Por favor, não envie solicitação de suporte aqui, veja a nota na parte superior deste modelo.
  • Deseja solicitar um recurso ou relatar um bug ?

É possível iniciar o dragscroll de outro índice diferente de 0?

  • Qual é o comportamento atual?
    No momento, o dragscroll está começando da primeira imagem/componente por padrão.

  • Qual é a motivação/caso de uso para mudar o comportamento?
    Seria bom escolher o índice onde iniciar o dragscroll (no carregamento).

feature request

Comentários muito úteis

Você pode realmente conseguir definir o índice inicial chamando moveTo no bloco `ngAfterViewInit. Certifique-se de envolver a chamada com setTimeout(() => {...}, 0);
Por exemplo:

  @ViewChild('nav', {read: DragScrollComponent}) ds: DragScrollComponent;
  ngAfterViewInit() {
    setTimeout(() => {
      this.ds.moveTo(3);
    }, 0);
  }

Todos 7 comentários

Você pode realmente conseguir definir o índice inicial chamando moveTo no bloco `ngAfterViewInit. Certifique-se de envolver a chamada com setTimeout(() => {...}, 0);
Por exemplo:

  @ViewChild('nav', {read: DragScrollComponent}) ds: DragScrollComponent;
  ngAfterViewInit() {
    setTimeout(() => {
      this.ds.moveTo(3);
    }, 0);
  }

já tentei .., infelizmente recebo esse erro toda vez:

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)

Você está chamando moveTo dentro do bloco ngAfterViewInit ? O método moveTo pode ser chamado quando o elemento arrastar scroll do carrossel estiver visível na página.
Ou você pode adicionar um pequeno atraso e tentar novamente como:

    setTimeout(() => {
      this.ds.moveTo(3);
    }, 1000);

deixe-me saber se isso funciona.

Eu fiz. Mas com tempo limite de 1s agora funciona! Obrigado pela ajuda, embora seja um pouco hacky.

Hmm, sem olhar o código, não consigo descobrir por que ngAfterViewInit não funciona para você. Eu diria que use o setTimeout por enquanto até que esse recurso seja lançado. Um PR é mais do que bem-vindo.

Você pode realmente conseguir definir o índice inicial chamando moveTo no bloco `ngAfterViewInit. Certifique-se de envolver a chamada com setTimeout(() => {...}, 0);
Por exemplo:

  @ViewChild('nav', {read: DragScrollComponent}) ds: DragScrollComponent;
  ngAfterViewInit() {
    setTimeout(() => {
      this.ds.moveTo(3);
    }, 0);
  }

Oi, por favor, adicione este recurso na documentação.

se eu usar esta solução, o usuário verá a animação com o primeiro item movido para o item específico.
Eu sugeriria abaixo. Você acha se está tudo bem?

ngAfterViewInit(){
  setTimeout(()=>{
    this.ds.currIndex = 3;
    this.ds._elementRef.nativeElement.children[0].scrollLeft = someValue;
  }, 10);
}
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

IlCallo picture IlCallo  ·  12Comentários

suresh2018 picture suresh2018  ·  22Comentários

Another-Sam picture Another-Sam  ·  12Comentários

IlCallo picture IlCallo  ·  14Comentários

MortezaT picture MortezaT  ·  5Comentários