【问题标题】:Angular 1.x typescript "TypeError: "Uploader" must be an instance of FileUploader"Angular 1.x typescript "TypeError: "Uploader" must be an instance of FileUploader"
【发布时间】:2018-03-31 22:00:08
【问题描述】:

我一直在尝试将 angular-file-upload here https://github.com/nervgh/angular-file-upload 与 typescript 一起使用,但我不断收到此错误:

TypeError: "Uploader" 必须是 FileUploader 的一个实例 我必须在实际的 angular-file-upload 上放置一个声明模块和导出命名空间才能使用模块(因为我们的框架就是这样构建的),但我似乎无法克服这个错误

不要担心模块初始化或命名空间名称等,我应该在那里放置占位符以不显示我们的实际代码。

代码如下:

/// <reference types="angular" />
/// <reference types="angular-ui-bootstrap" />
/// <reference types="angular-file-upload"/>

var bootbox: any;

module MyModule.module {
    export class MyController  {
      
                

        static $inject = [
            "$scope",
            "$q",
            "$state",           
            "FileUploader"
               
        ];

        constructor(private scope: any,
            private promiseService: angular.IQService,
            private stateService: angular.ui.IStateService,          
            private uploader: angular.file.upload.FileUploader
            )                      
        {

            this.uploader.url = "upload.php";

            this.scope.uploader = this.uploader
}

(function () {
"use strict";
angular.module("myApp").controller("app.mymodule.controller", Namespace.MyApp.MyController);
})();
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<input type="file" nv-file-select uploader="vm.uploader" /><br />

<ul>
  <li ng-repeat="item in uploader.queue">
    Name: <span ng-bind="item.file.name"></span><br />
    <button ng-click="item.upload()">upload</button>
  </li>
</ul>

【问题讨论】:

    标签: javascript angularjs typescript file-upload angular-file-upload


    【解决方案1】:

    尝试用new angular.file.upload.FileUploader() 实例化FileUploader

    【讨论】:

    • 在构造函数签名下的私有上传器上?如果是的话,那是行不通的,哈哈
    • 哎呀,我的错,您是否尝试在课程主体的上传器上使用 new 运算符?还是在初始化时发生错误?
    • 是的,我尝试了示例中的那个,但我想因为我使用的是示例,所以它是不同的,当我使用 new 时,我收到一个错误,提示不能将 new 与类型缺少调用的表达式一起使用或构造签名。
    • 而this.uploader有什么价值?
    • 它似乎是我设置的文件上传器,它是从库中导出的。当我执行“this.uploader”时,我确实看到了所有方法,如 uploadAll、isHtml5 等。
    【解决方案2】:

    我解决了我的问题,我没有正确使用界面。这是正确的代码:

    constructor(private scope: any,
      private fileUploaderFactory: angular.file.upload.FileUploaderFactory) {
    
    
      this.scope.uploader = new fileUploaderFactory({
        url: 'upload.php'
      });
    }

    【讨论】:

      猜你喜欢
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 2021-11-23
      • 2013-09-24
      相关资源
      最近更新 更多