Ionic 如何在Angular / TypeScript项目中使用IScroll

7gyucuyw  于 2023-04-27  发布在  Ionic
关注(0)|答案(1)|浏览(149)

我有一个Angular(离子)应用程序,我需要在桌面上滚动动量(在Electron内部运行)。
一种很有希望的方法是使用IScroll,但是我无法加载它。
我已经安装了,所以我在我的package.json中有以下内容

"iscroll": "^5.2.0",

并通过npm install @types/iscroll@5.2.1安装了打字
首先,我无法导入,我得到一个错误:
[ts]文件“% d:/dev/capacitor/electron 2/node_modules/@types/iscroll/index.d.ts”不是模块。
然后,我尝试将以下内容添加到iscroll/index.d.ts的底部:

export {IScroll};

现在看来,这个错误已经消除了。
我现在添加了以下代码:

public ngAfterViewInit() {
   var wrapper = document.getElementById('wrapper');
   var myScroll = new IScroll(wrapper);
 }

(我知道我应该,也会使用@ViewChild(),只是想让它在最初工作)
这可以构建,但是当我转到测试页面时,我得到以下错误:

Error: Uncaught (in promise): TypeError: __WEBPACK_IMPORTED_MODULE_3_iscroll__.IScroll is not a constructor
    TypeError: __WEBPACK_IMPORTED_MODULE_3_iscroll__.IScroll is not a constructor
        at ListPage.webpackJsonp.190.ListPage.ngAfterViewInit (http://localhost:8100/build/main.js:114:24)
        at callProviderLifecycles (http://localhost:8100/build/vendor.js:13122:18)

在类型定义中,我们有以下内容:

declare class IScroll {
  constructor (element: string, options?: IScrollOptions);
  constructor (element: HTMLElement, options?: IScrollOptions);

我怎么才能让它工作?

更新1

我的下一个尝试是从类型定义中删除导出,尝试并按如下所示导入。

import  'iscroll';

应用程序构建和运行时没有TypeScript错误,直到我们进入示例化IScroll的页面,此时error变为

Error: Uncaught (in promise): ReferenceError: IScroll is not defined
    ReferenceError: IScroll is not defined
        at ListPage.webpackJsonp.190.ListPage.ngAfterViewInit (http://localhost:8100/build/main.js:116:24)
        at callProviderLifecycles (http://localhost:8100/build/vendor.js:13122:18)

所以,还是没找到。

更新2

尝试了@Jamshed的建议

import * as IScroll from 'iscroll'; or
 import IScroll from 'iscroll'; or
 import { IScroll } from 'iscroll'

所有这些给予

[ts] File 'd:/dev/capacitor/electron2/node_modules/@types/iscroll/index.d.ts' is not a module

我只是尝试添加“老方法”。
所以在index.html中我添加了

<script src='D:/dev/capacitor/electron2/node_modules/iscroll/build/iscroll-lite.js'></script>

然后是TS组件文件中的declare var IScroll: any;
但我又一次得到

Error: Uncaught (in promise): ReferenceError: IScroll is not defined
    ReferenceError: IScroll is not defined

在运行时。

更新3

我找到了this post,但是如果我把他的index.d.ts文件复制到我的,我仍然不能import {IScroll}。我可以看到一些其他的导出,在那里,但不是IScroll。

lbsnaicq

lbsnaicq1#

我知道,已经3年过去了。但是我今天遇到了类似的需求,发现了这个:https://www.npmjs.com/package/@types/iscroll
只需将其添加到依赖项中,它将创建一个Typescript填充器

相关问题