プロジェクトでfabricjsを使用したい。 bowerを使用してfabricjsをインストールし、index.htmlにリンクしました。しかし、それは機能していません。以下のコードをご覧ください。
index.html
<html>
<head>
<script>document.write('<base href="' + document.location + '" />'); </script>
<title>Image Editor</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/bootstrap/dist/css/bootstrap.min.css">
<!-- 1. Load libraries -->
<!-- Polyfill(s) for older browsers -->
<script src="libs/core-js/client/shim.min.js"></script>
<script src="libs/zone.js/dist/zone.js"></script>
<script src="libs/reflect-metadata/Reflect.js"></script>
<script src="libs/systemjs/dist/system.src.js"></script>
<script src="css/jquery/dist/jquery.min.js"></script>
<script src="css/bootstrap/dist/js/bootstrap.min.js"></script>
// incuding fabricjs here
<script src="../../bower_components/fabric.js/dist/fabric.min.js"></script>
<!-- 2. Configure SystemJS -->
<script src="systemjs.config.js"></script>
<script>
System.import('app').catch(function(err){ console.error(err); });
</script>
</head>
<!-- 3. Display the application -->
<body>
<my-app>Loading...</my-app>
</body>
</html>
これはコンポーネントファイル「stage.component.ts」です。
import {Component, OnInit} from '@angular/core';
import { ActivatedRoute, Router} from '@angular/router';
import { fabric } from 'fabric';
import { ImageService } from '../services/image.service';
declare var fabric:any;
@Component({
selector:'my-stage',
styleUrls: ['./app/stage/stage.component.css'],
templateUrl: './app/stage/stage.component.html',
})
export class StageComponent implements OnInit {
title:string = 'Image Editor';
imgpath: string = '';
canvas:any = null;
// fabric:any = null;
constructor(
private route: ActivatedRoute,
) {
// this.fabric = new fabric();
}
ngOnInit() {
this.canvas = new fabric.Canvas('fstage', {
isDrawingMode: true,
selection: true
});
}
}
私は多くの参考文献を検索しましたが、私の何が悪いのかを見つけることができませんでした。アドバイスをお願いします、ありがとうございます。
行なしでfabric.jsを使用できます
'fabric'から{fabric}をインポートします。
index.htmlにスクリプトをロードし、tsファイルでライブラリを宣言します。
import { Component } from '@angular/core';
declare var fabric: any;
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
printValue() {
console.log(fabric.version);
};
}
ブラウザコンソールで:
1.6.7 app.component.ts:13
現代の使用法:
npm i fabric
npm i @types/fabric
Angular 5.2.8およびFabric2.2.2のデモ
[〜#〜] html [〜#〜]
<div>
<canvas id="myCanvas" width="500" height="500"></canvas>
</div>
TypeScript
import { Component, OnInit } from '@angular/core';
import { fabric } from 'fabric';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
canvas: any;
ngOnInit() {
this.canvas = new fabric.Canvas('myCanvas');
this.canvas.add(new fabric.IText('Hello Fabric!'));
}
}
このようにして、Angular-cliを使用して作成されたAngularプロジェクトにFabric.jsを追加しました:
1)システムに Cairo をインストールします。
注:Cairoは、Fabric.jsが依存するnode-canvasを強化するシステムライブラリです。インストールが完了したら、ファブリックをインストールする前に、ターミナルを再起動するか、プロンプトを実行する必要がある場合があります。
2)Fabric.jsをインストールします
npm install fabric --save
3)Fabric.jsのTypeScript定義をインストールします
typings install fabric --source dt --save
4)必要なtsファイルにファブリックをインポートします
import 'fabric';
declare const fabric: any;
ここ 私の「HelloWorld」Angular + Fabric.jsプロジェクトを見つけることができます。
その他のリンク:
最近同様の問題が発生しました。次の手順で解決しました。 (angular 2.3.1 + angle-cli 1.0.0-beta.31)
src
フォルダーの下にtypings.d.tsというファイルを作成します。declare module 'fabric';
初期化。import { fabric } from 'fabric';
Angular 2コンポーネント。私も同じ問題を抱えています、以下は私の解決策です。
ファブリックをインストールする
$ npm install fabric --save
タイピングモジュールを生成する
$ typings install fabric --source dt --save
プットdeclare module 'fabric';
の終わりに src/typings.d.ts
import { fabric } from 'fabric';
Angular2コンポーネント内。正常に動作しており、ファブリックのオートコンプリートの提案も行っています。