【问题标题】:How to get Slick Component Instance using view Child如何使用 View Child 获取 Slick 组件实例
【发布时间】:2018-04-17 07:09:38
【问题描述】:

我是 Angular 的新手,正在尝试实现分页轮播 using ngx-slick plugin

使用这个插件,当模板加载因果关系时,我需要确保因果关系从索引 1(而不是 0)开始。该插件为此提供了一个称为 slickGoTo 的功能。为了调用这个函数,我需要光滑组件的实例。但是每当我尝试获取 slick 组件的实例时,我都会收到此“错误:无法读取未定义的属性 'slick'”错误。我已经在stackblitz url 中实现了这个场景(当你打开 stackblitz 时,jquery 没有加载,不知道为什么)。请建议如何获取该组件的实例

下面是使用它的模板示例:

<ngx-slick class="carousel" #slickModal="slick-modal" [config]="slideConfig" (afterChange)="afterChange($event)">
        <div ngxSlickItem *ngFor="let slide of slides" class="slide">
              <img src="{{ slide.img }}" alt="" width="100%">
        </div>
    </ngx-slick>

    <button (click)="addSlide()">Add</button>
    <button (click)="removeSlide()">Remove</button>
    <button (click)="slickModal.slickGoTo(2)">slickGoto 2</button>
    <button (click)="slickModal.unslick()">unslick</button>

您可以在其中看到 slickGoto 按钮。我的组件类中需要相同的功能。

【问题讨论】:

    标签: angular slick.js


    【解决方案1】:

    试试这样的。

    在您的 html 文件中。

    <your-slick-component #slickComponent></your-slick-component>
    

    在你的 ts 文件中。

    @ViewChild('slickComponent')
    public slickComponent: any;
    
    public ngAfterViewInit(): void {
        if(this.slickComponent) {
          this.slickComponent.slickGoTo(1);
        }
    }
    

    希望这会有所帮助。

    【讨论】:

    • 用示例更新了问题。我在指令中获得了光滑的组件,但是每当我在我的组件中获取它时。我越来越不确定。做了和上面提到的一样的事情,没有得到 slick 的实例
    • 您是否尝试将另一个变量添加到模板并将其传递给 ts 文件? #slickModal="slick-modal" 和 #slick 并使用 #slick 变量引用 slick 组件
    • 我认为它没有初始化,因为在我们调用它的实例函数之前初始化这个组件需要一些时间。我不确定如何在组件中使用它的 init 事件
    • 好的。作为最后一件事,尝试将光滑的引用传递给函数。 &lt;button (click)="goTo(slickModal)"&gt;slickGoto 2&lt;/button&gt; 在你的 ts 文件中 public goTo(slickModal: any): void { slickModal.slickGoTo(2) }
    • 是的,我没有使用幻灯片数组名称,因为在将项目列表更改为幻灯片后,它的实例未定义
    猜你喜欢
    • 1970-01-01
    • 2012-11-24
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 2022-08-20
    • 1970-01-01
    • 2018-01-28
    相关资源
    最近更新 更多