使用 Fabric 拖放在 Angular 中不起作用

Posted

技术标签:

【中文标题】使用 Fabric 拖放在 Angular 中不起作用【英文标题】:Drag & drop not working in Angular using Fabric 【发布时间】:2021-06-06 16:11:01 【问题描述】:

我正在尝试将 Fabric.js 用于我的图像编辑器。

将图像从加载区域拖放到画布上。

这是我的 html 代码

    <div class="panel panel-default panel-upload">
  <div class="panel-heading">Upload Picture</div>
  <div class="panel-body text-center">
    <img id="testImage" draggable="true"  class="images-item-upload" *ngFor='let url of urls' [src]="url?.url"  (click)="addImageOnCanvas(url.url);"/>
    <label class="btn btn-default btn-block file-container">
      <i class="fa fa-fw fa-upload"></i> Choose a file
      <input type='file' [disabled]="urls.length >= 16"  multiple (change)="readUrl($event);">
    </label>
  </div>
</div>

这是我的 ts 代码

    addImageOnCanvas(urls): void 
    if (urls) 
        fabric.Image.fromURL(urls, (image) => 
            image.set(
                left: 10,
                top: 10,
                angle: 0,
                padding: 10,
                cornersize: 10,
                hasRotatingPoint: true,
                title: this.urlName
            );
            image.scaleToWidth(Math.round(this.size.width / 2));
            this.extend(image, this.randomId());
            this.canvas.add(image);
            this.selectItemAfterAdded(image);
        );

        this.updateLayers();
    

当我尝试拖放时出现错误

Cannot read property 'src' of undefined
at EditorComponent.push.xD4D.EditorComponent.handleDropOnCanvas (editor.component.ts:1036)

接下来我可以尝试什么?

【问题讨论】:

你能发布一个小提琴或一个工作的sn-p来显示这个问题吗? @melchiar 我在 stackblitz 上传代码时遇到问题 【参考方案1】:

为什么不检查传递给回调的第二个参数?

Second argument is a boolean indicating if an error occurred or not.

http://fabricjs.com/docs/fabric.Image.html#.fromURL

我会从那里开始。

【讨论】:

以上是关于使用 Fabric 拖放在 Angular 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

拖放在 Xcode 中不起作用

拖放在 C# 中不起作用

拖放在 DataGrid (WPF) 中不起作用

拖放在Firefox中不起作用[重复]

拖放在 C# Winforms 应用程序中不起作用

Tailwind 自定义颜色在 Angular 生产构建中不起作用