尝试在角度5中使用外部Javascript库

时间:2018-01-30 22:44:04

标签: javascript angular typescript slick.js

我知道有类似的问题,但我仍然无法让它发挥作用..

所以我想使用slick.js所以我下载了文件并将其放在我的角度应用程序的资源文件夹中

我已经在我的

中导入了这些库

angular.cli.json

"styles": [
    "./assets/scripts/slick-1.8.0/slick.css",
    "./assets/scripts/slick-1.8.0/slick-theme.css"
],
"scripts": [
    //jQuery imports above
    "./assets/scripts/slick-1.8.0/slick.min.js"
]

然后在我的组件中......

import { Component, OnInit, Injector } from '@angular/core';
import { AppComponentBase } from '@shared/common/app-component-base';
import * as Slick from '../../../../assets/scripts/slick-1.8.0/slick/slick.min.js';
@Component({
    selector: 'app-di-type2',
    templateUrl: './di-type2.component.html',
    styleUrls: ['./di-type2.component.scss']
})

export class DiType2Component extends AppComponentBase implements OnInit {

   public constructor(
    injector: Injector
   ) {
     super(injector);
   }

   ngOnInit() {
      const slideContainer = document.querySelector('.slider');
      slideContainer.slick({
         autoplay: true,
         autoplaySpeed: 3500,
      });
   }

}

从我读到的关于将外部javascript库导入角度应用程序的内容这应该可行..我在vscode中收到错误[ts] Property 'slick' does not exist on type 'Element'.any

然后在我的控制台中获取

enter image description here

任何帮助将不胜感激!

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以将库声明为var类型"任何" (假设它没有输入定义* .d.ts),如果在index.html中导入脚本,则在组件中导入后:

declare let <yourlib>: any;

答案 1 :(得分:0)

使用Node和NPM安装Slick.js

  

https://nodejs.org/

npm install slick-carousel --save
  

https://www.npmjs.com/package/slick-carousel

安装此npm后,它将作为依赖项保存在package.json文件中。

然后导入Slick:

import 'slick-carousel';

someElement.slick();