Angular DropzoneJS上传后隐藏dropzone区域,如何取回?
我使用的是Angular DropzoneJS上传后隐藏dropzone区域,如何取回?,angular,typescript,dropzone.js,Angular,Typescript,Dropzone.js,我使用的是angular2dropzone包装器,它几乎可以满足我的需要 我有以下配置: this.dropZoneConfig = { server: this.url, maxFilesize: 50, acceptedFiles: ".xml", parallelUploads: 5, uploadMultiple: true, createImageThumbnails: false, addRemoveLinks: true,
angular2dropzone包装器
,它几乎可以满足我的需要
我有以下配置:
this.dropZoneConfig = {
server: this.url,
maxFilesize: 50,
acceptedFiles: ".xml",
parallelUploads: 5,
uploadMultiple: true,
createImageThumbnails: false,
addRemoveLinks: true,
headers: { "Authorization": "Bearer " + sessionStorage.getItem("AccessToken")}
};
当我选择要上传的文件时,我会看到进度条。
当上传所有文件时,我会得到一个很大的空块,其中以前包含了进度条。我没有看到任何东西,因为我设置了createImageThumbnails:false
,这是正确的,因为我正在上载XML文件,不需要缩略图
所有文件完成后,我希望dropzone重置。所有以前上传的文件都将被删除,dropzone区域将恢复
我发现了几个使用removeFile(file)方法的示例。这似乎很管用,但示例是JavaScript,我使用的是TypeScript,不知道如何转换它(我是TypeScript新手)
我确实听了QueueComplete
:
private onDropZoneQueueComplete(event) {
console.log("In onDropZoneQueueComplete");
}
在这里,我想我需要调用removeFiles方法或在“Success”事件侦听器中调用removeFile
编辑:
我的HTML:
表示您需要在上调用removeFile()
或removeAllFiles()
Dropzone实例,即myDropzone.removeAllFiles()
但是,在浏览angular2 dropzone包装器的源代码时,我偶然发现了一个方法,它可以为您调用this.dropzone.removeAllFiles()
。旁注:调用removeAllFiles()
时,将不会删除正在上载的文件
您可以使用以下语法调用reset()
方法:
或者,如果您有更多代码要在queuecomplete
上执行,则可以调用自定义方法并将引用传递给指令(dz
):
然后在你们班上:
private onDropZoneQueueComplete(事件,dz){
this.filesListComponent.reload();//其他代码
dz.reset();
}
Paul还提到他添加了以下CSS:
.dz-preview.dz-file-preview.dz-processing.dz-success.dz-comp删除{显示:无!重要;}
仅供参考,我最初的想法是:让我们掌握由Dropzone指令创建的Dropzone实例!不幸的是,angular2 dropzone包装器不允许您访问它创建的dropzone实例(
this.dropzone
是私有属性)。它也没有导出为实例(它可以让您编写类似于
的东西,以便在自己的mydz
属性中获得dropzone实例)。Paul,我对dropzone或angular2 dropzone包装器都不熟悉,但我想提供帮助。如何收听QueueComplete
事件?你的onDropZoneQueueComplete
是如何被调用的?我已经更新了我的帖子并添加了我的HTML代码。使用此配置属性解决了我隐藏dropzone区域的问题:autoReset:10
现在,当文件上载时,它们会被删除,dropzone区域会再次显示。使用autoReset
结果会取消所有文件,即使它们尚未上载,因此我需要弄清楚如何调用removeFiles()方法,我明白了autoReset也不理想,但它设置了任意的时间限制(如果文件上传时间超过10秒怎么办?)。我会发布我心中的解决方案,请随时通知我。谢谢你的回答。我不知道#dz
的把戏。我做了一些小改动:
,因为上传完成后我需要做更多的事情:private onDropZoneQueueComplete(event,dz){this.filelistcomponent.reload();dz.reset();},并且我还添加了一些CSS:.dz-preview.dz-file-preview.dz-processing.dz-success.dz-complete{display:none!important;}你能更新你的答案吗?我会标记它。好的,很好。这是我最初的代码,但我简化了它,因为在你提供的代码中,$event
没有任何用处。:-)我会尽快更新我的答案。(注意,你仍然没有使用$event
,所以你不必通过它。)
<dropzone [config]="dropZoneConfig" [message]="'Click or drag images here to upload'"
(error)="onDropZoneUploadError($event)"
(sendingmultiple)="onDropZoneSendingMultiple($event)"
(queuecomplete)="onDropZoneQueueComplete($event)"></dropzone>