Angular 2 с использованием сторонних библиотек в шаблоне
Я пытаюсь использовать стороннее приложение (JustGage) в своем приложении. Я правильно загрузил его в файл angular-cli.json и могу создать его в своем компоненте
ngAfterViewInit() {
var g = new JustGage({
id: "gauge",
value: 67,
min: 0,
max: 100,
title: "System Health"
});
}
это на самом деле работает хорошо, но я заметил, что моя IDE жалуется на
Не могу найти имя 'JustGage'
Когда я попытался построить приложение, компиляция не удалась из-за этой ошибки.
Как я решил эту проблему?
Кстати, я попытался объявить JustGage: любой, а затем вызвать this.JustGage, но датчик не отображается и консоль ОБНОВЛЕНИЕ
declare var require: any;
var JustGage = require("justgage/justgage.js");
Таким образом, требование приносит что-то, но это не JustGage говорит, что JustGage не конструктор...
2 ответа
Поэтому, так как он уже работал, проблема была не в фактическом использовании сторонней библиотеки, а в проблеме машинописи, которая была решена
declare var JustGage: any;
в разделе импорта после этого я смог скомпилировать
На всякий случай, если это кому-то поможет, то фактическая загрузка скриптов выполняется в angular-cli.json.
"scripts": [
"../node_modules/chart.js/dist/Chart.js",
"../node_modules/justgage/raphael-2.1.4.min.js",
"../node_modules/justgage/justgage.js"
],
Если вы пытаетесь получить доступ к этому JustGage
библиотека вам придется либо import
это если вы используете синтаксис ES6 или require
это иначе.
Использование такого имени означает, что вы предполагаете, что это global variable
,
import {JustGage} from 'path/JustGage'
Или вы можете поместить эту строку в свой файл (предположим, что вы используете машинопись, в противном случае измените расширение на любое другое):
/// <reference path="path/JustGage.d.ts" />
И, конечно, вам придется ссылаться на вашу библиотеку где-то в вашем index.html
или же config
,