Angular 6-在Angular MatDialog中显示s3文件上传下载进度

时间:2018-09-24 04:06:49

标签: angular material-design

我想将进度百分比数据从调用组件传递到MatDialog。使用dialogref或通过在Dialog组件构造函数中注入数据,我只能将变量设置为初始值。但是该值不会更新,因为它是在调用组件内部更新的。

想法是在对话框中有一个带有百分比的进度条,以阻止用户在上载/下载期间的操作。

2 个答案:

答案 0 :(得分:1)

您可以使用shared service或仅在要从中启动对话框的模块中创建service,在服务中以模态形式创建ObservableSubject当前进度应该收听Observable,并在Subject上使用.next(progressValue)来更新值。

您可以了解更多here,这与父级和子级有关,但是如果对话框与组件/服务位于同一模块中,那么应该没有任何问题。

答案 1 :(得分:0)

在getObject函数中使用httpdownloadprogress可以检查下载进度

.on('httpDownloadProgress',(progress) => {     
                 // shows file download progress
        });

这是包括下载功能在内的整个代码

import { config, SecretsManager, S3 , CognitoIdentityCredentials} from 'aws-sdk';

    const bucket = new S3({
                        accessKeyId: <accessKeyId>,
                        secretAccessKey: <secretAccessKey>,
                        region: <region>
                    });

    const params = {        
                      Bucket: <BucketName>,
                      Key: <fileName>,
                   };

       bucket.getObject(params, (err:any, data:any) =>{
            if (err) {
                 // shows AWS s3 error
             }else{
                 // response of binary data 

             }
        }).on('httpDownloadProgress',(progress) => {     
                 // shows file download progress
        });