尝试在angular 5中使用外部Javascript库

尝试在angular 5中使用外部Javascript库,javascript,angular,typescript,slick.js,Javascript,Angular,Typescript,Slick.js,我知道也有类似的问题,但我还是无法让它发挥作用 所以我想使用,所以我下载了文件并把它放在angular应用程序的资产文件夹中 我把图书馆导入了我的电脑 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 "

我知道也有类似的问题,但我还是无法让它发挥作用

所以我想使用,所以我下载了文件并把它放在angular应用程序的资产文件夹中

我把图书馆导入了我的电脑

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库导入angular应用程序的内容来看,这应该是可行的。。我在vscode中收到一个错误,该错误表示类型“Element”上不存在属性“slick”。任何

然后在我的控制台里,我得到了

任何帮助都将不胜感激


谢谢

如果在index.html中导入脚本,则在组件中导入后,可以将库声明为“any”类型的变量(假设它没有类型定义*.d.ts):

declare let <yourlib>: any;
声明let:any;

使用节点和NPM安装Slick.js

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

然后导入Slick:

import 'slick-carousel';

someElement.slick();

TypeError可能意味着找不到Slick的类型,因此编译器不知道。Slick是一个函数。您是否有javascript库的
.d.ts
文件?Slickjs需要jquery对象更改文档.querySelector('.slider');到$('.slider')。您的堆栈中也应该有jquery,但是在Angular中使用jquery DOM选择是非常不受鼓励的,因为您应该使用Angular来处理DOM。可以使用角度数据绑定和变换来创建图像滑块。也许您可以找到现有的角度图像滑块组件。
import 'slick-carousel';

someElement.slick();