Я установил Angular 2 (RC4) с угловым cli и использовал [email protected]
.
Я установил jQuery с
npm install [email protected] --save
добавляет
"jquery": "^2.2.4"
в package.json
и типизация с
typings install dt~jquery --global --save
добавляет
"jquery": "registry:dt/jquery#1.10.0+20160704162008"
в typings.json (Примечание: это типизация для релизов 1.x и 2.x!)
Когда я теперь использую import $ from 'jquery'
или import * as $ from 'jquery'
в любом из моих файлов TypeScript, tsc возвращает:
[ts] Не удается найти модуль jquery.
Может ли кто-нибудь сказать мне, почему? Что я делаю не так?
Вы выбрали jQuery DefinitelyTyped?
http://www.nuget.org/packages/jquery.TypeScript.DefinitelyTyped/
Я решил это без ракетостроения, просто делай это по-старому. Кажется, что RC4 имеет определенную проблему, правильно разрешая типизацию. Но поскольку я разработчик программного обеспечения, и все связанные с угловым "материалом RC" в последний раз сильно меняются, трудно решить это для любого RC, поэтому я решил сделать это немного старой школы, например:
declare var $: any; // <-- yep, that it
declare var FlipClock: any; // <-- same here
@Component({
selector: 'my-component',
moduleId: module.id,
templateUrl: './template.html',
styleUrls: ['./styles.css']
})
export class MyComponent implements AfterViewInit {
@ViewChild('flipclock') flipClock: ElementRef;
errors: any;
constructor() {
}
ngAfterViewInit() {
$(this.flipClock.nativeElement).FlipClock({ // <-- we must make sure that
clockFace: 'TwentyFourHourClock' // at runtime $ and FlipClock
// exists
});
}
}
Чтобы обеспечить jQuery и FlipClock во время выполнения, нам просто нужно добавить скрипты в наш index.html
:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>My ng2-rc4 app</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="vendor/flipclock/compiled/flipclock.css">
<link rel="stylesheet" href="app/main.css">
</head>
<body>
<my-app>Loading ...</my-app>
<script src="/vendor/jquery/dist/jquery.min.js"></script>
<script src="/vendor/flipclock/compiled/flipclock.min.js"></script>
</body>
</html>