Como usar o IScroll em um projeto Angular / TypeScript
eu tenho umAngular
(Ionic
) onde eu preciso de rolagem dinâmica para a área de trabalhoElectron
)
Uma maneira promissora de fazer isso pode ser usarIScroll, no entanto, não consigo carregar isso.
Eu instalei, então eu tenho o seguinte no meupackage.json
"iscroll": "^5.2.0",
e também instalou as digitações vianpm install @types/[email protected]
Primeiro, não consegui importar, recebo um erro[ts] File 'd:/dev/capacitor/electron2/node_modules/@types/iscroll/index.d.ts' is not a module.
Tentei adicionar o seguinte ao final deiscroll/index.d.ts
..
export {IScroll};
Agora parecia remover o erro.
Agora adicionei o seguinte código:
public ngAfterViewInit() {
var wrapper = document.getElementById('wrapper');
var myScroll = new IScroll(wrapper);
}
(Eu sei que devo usar e vou usar@ViewChild()
apenas tentando fazê-lo funcionar inicialmente)
Isso cria ok, mas quando vou para a página de teste, recebo o seguinte erro ..
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)
Na definição de tipo, temos o seguinte ...
declare class IScroll {
constructor (element: string, options?: IScrollOptions);
constructor (element: HTMLElement, options?: IScrollOptions);
Alguém sabe como fazer isso funcionar?
Agradecemos antecipadamente por qualquer ajuda!
[UPDATE1] Minha próxima tentativa foi remover a exportação da definição de tipo, tentar importar da seguinte maneira.
import 'iscroll';
O aplicativo cria e executa sem erro TypeScript, até entrarmos na página que instancia o IScroll, onde o erro agora se torna
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)
Então, ainda não onde.
[UPDATE2]
Tentei as sugestões de @Jamshed
import * as IScroll from 'iscroll'; or
import IScroll from 'iscroll'; or
import { IScroll } from 'iscroll'
Todos estes dão
[ts] File 'd:/dev/capacitor/electron2/node_modules/@types/iscroll/index.d.ts' is not a module
Eu tentei apenas adicionar o "caminho antigo".
Então, em index.html eu adicionei
<script src='D:/dev/capacitor/electron2/node_modules/iscroll/build/iscroll-lite.js'></script>
e então odeclare var IScroll: any;
no arquivo de componente ts.
Mas mais uma vez eu recebo
Error: Uncaught (in promise): ReferenceError: IScroll is not defined
ReferenceError: IScroll is not defined
em tempo de execução.
[UPDATE3]
eu encontreiesta postagem, mas se eu copiar oindex.d.ts
arquivo no meu, ainda não consigoimport {IScroll}
. Eu posso ver várias outras exportações lá, mas não o IScroll ...