嗨,我从Angular 2开始,试图让这个转盘插件工作: slick

过了一会儿,我设法让它像这样的组件工作:

import { Component,Input,ElementRef,AfterViewInit,AfterContentinit} from '@angular/core';
declare var jQuery: any;

@Component({
    selector: 'slick-slider',template: `
        <ng-content></ng-content>
    `
})
export class SlickSliderComponent implements AfterContentinit{
    @input() options: any;

    $element: any;

    defaultOptions: any = {};

    constructor(private el: ElementRef) {
    }

    ngAfterContentinit() {
        for (var key in this.options) {
            this.defaultOptions[key] = this.options[key];
        }

        this.$element = jQuery(this.el.nativeElement).slick(this.defaultOptions);
    }
}

我会在模板上使用它:

<slick-slider>
    <div><img class="btn btn-lg" src="/assets/img/img1.png" /></div>
    <div><img class="btn btn-lg" src="/assets/img/img2.png" /></div>
    <div><img class="btn btn-lg" src="/assets/img/img3.png" /></div>
    <div><img class="btn btn-lg" src="/assets/img/img4.png" /></div>
    <div><img class="btn btn-lg" src="/assets/img/img5.png" /></div>
</slick-slider>

这工作正常但是当我尝试使用它在* ngFor这样:

<slick-slider>
    <div *ngFor="let source of sources">
        <img class="btn btn-lg" (click)="watchSource(source)" src="/assets/img/{{source.name}}.png" />
    </div>
</slick-slider>

它停止工作.我假设是因为滑块的初始化在< div>之前完成.元素正在呈现.因为我最终得到这个渲染的html:

<slick-slider class="slick-initialized slick-slider">
    <div>
      <img ... >
    </div>
    <div>
      <img ... >
    </div>
    <div>
      <img ... >
    </div>
    <div>
      <img ... >
    </div>

    <div aria-live="polite" class="slick-list draggable">
      <div class="slick-track" role="listBox" style="opacity: 1; width: 0px; transform: translate3d(0px,0px,0px);">
        <!-- Divs should be rendered here with slick styles included -->
      </div>
  </div>
</slick-slider>

任何想法如何使这项工作?我尝试使用“ngAfterContentinit”和“ngAfterViewInit”似乎都不工作.

这是使用SlickSliderComponent的组件:

import { Component,OnInit } from '@angular/core'
import { DeviceSource } from './device-source'
import { RemoteService } from './remote.service';

@Component({
    selector: 'device-selector',moduleId: module.id,templateUrl: 'device-selector.component.html',providers: []
})



export class DeviceSelectorComponent implements OnInit {

    sources: [DeviceSource];

    ngOnInit(): void {
        this.getDeviceSources();
    }

    constructor(private remoteService: RemoteService){}

    getDeviceSources(): void {
        this.remoteService.getDeviceSources().then(sources => this.sources = sources);
    }
}

这里是使用的服务:

import { Injectable } from '@angular/core'
import { DeviceSource } from './device-source'

export const DEVICE_SOURCES:[DeviceSource]=
[
    {id: 1,dispayName: 'TV',name:'tv'},{id: 2,dispayName: 'Chrome',name:'chrome'},{id: 3,dispayName: 'Cable',name:'cable'},{id: 4,dispayName: 'XBox',name:'xBox'},dispayName: 'Pi',name:'pi'},];


@Injectable()
export class RemoteService {
    getDeviceSources(): Promise<[DeviceSource]> {
        return Promise.resolve(DEVICE_SOURCES); 
    }
}

解决方法

您应该将* ngIf指令添加到您的光滑滑块,以便在数据源填充后插入到DOM中,在这种情况下它是可变源:
<slick-slider *ngIf="sources">
    <div *ngFor="let source of sources">
        <img class="btn btn-lg" (click)="watchSource(source)" src="/assets/img/{{source.name}}.png" />
    </div>
</slick-slider>

javascript – 带角度2的Slick Carousel的更多相关文章

  1. SlickGrid example 6:Ajax加载

    响应鼠标事件,可以左键快捷选择切换选项,可右键弹出菜单栏。

  2. jquery – 带角度JS的Slick Carousel

    我在AngularJS应用程序中使用Slick转盘.为此我创建了如下指令:这是我的视图文件中的代码:在这种情况下,它正常工作正常并正确初始化.但是当我使用ngRepeat动态创建幻灯片时,它不是初始化,而是一个接一个地显示幻灯片.这是我的代码使用ngRepeat任何建议,我该如何解决?解决方法我怀疑光滑的插件可能需要DOM被完全渲染才能正常工作.尝试:

  3. jquery – 我可以在飞行中添加一列到slickgrid吗?

    是否可以在飞行中向slickgrid添加一个新颖的列.我试图制作一个用户可构建的矩阵,并且需要它们在构建时添加列.解决方法例如

  4. Ionic2如何在页面中使用JQuery插件

    我是离子2的新手,我创建项目并需要jquery插件链接colorBox,slick-carousel…我在终端上运行命令我导入了JQuery:然后离子错误是:找不到模块’slick-carousel’.请帮我解决这个问题,或准备好示例,以便我参考.谢谢大家!

  5. jquery – 如何在Slick Carousel上更改幻灯片的宽度和高度?

    解决方法我做了这个插件.发生了一些css干扰.它是滑块本身的边框.要么使用吸收边框宽度,或将边框放在幻灯片内的内容上.

  6. javascript – 带角度2的Slick Carousel

    嗨,我从Angular2开始,试图让这个转盘插件工作:slick过了一会儿,我设法让它像这样的组件工作:我会在模板上使用它:这工作正常但是当我尝试使用它在*ngFor这样:它停止工作.我假设是因为滑块的初始化在之前完成.元素正在呈现.因为我最终得到这个渲染的html:任何想法如何使这项工作?

  7. jquery – Slick Slider加载显示:none创建不好的启动

    我在顶层(z-index)上有一个拇指画廊和一个Slick滑块,通过css隐藏,显示:none.当点击拇指时,显示设置更改为阻止,滑块显示,但是:幻灯片的宽/高/左/右等从不计算,看看这个小提琴:http://jsfiddle.net/5eceg5yd/1/HTML:CSS:jQuery的:它就好像滑块装载了display:none,没有任何计算.也许它完全明显的是这应该发生,但我无法弄清楚如何创

  8. javascript – 使用htmlwidgets :: scaffoldWidget将外部js库合并到一个新包中,进入一个闪亮的应用程序

    但我真的很困惑如何调整inst/htmlwidget/slick.js文件和R/slick.R文件的方式可以采用网址向量并在闪亮的应用程序中显示它们.这样做的原因是,它似乎与提供的示例不匹配类似的输入数据概念.为了重现性并使用包中示例中提供的相同URL,我提供了一个占位符imgurl的向量,我想将其用作内容.对于旋转木马中的每个图像.也许我可能需要使用这样的东西?…一如既往,对此的任何帮助都将非常感激.编辑我的新slick.yaml文件看起来如下……

  9. javascript – 如何在Slick Carousel中获取事件中的幻灯片元素?

    .解决方法你需要像这样包含第一个参数“event”或者你的“currentSlide”论点将是“光滑的”

  10. jQuery幻灯片插件slick实例

    总结以上是DEVMAX为你收集整理的jQuery幻灯片插件slick实例全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部