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,

Другие вопросы по тегам