Angular 如何在执行函数和方法调用时确定mat progressbar中的百分比值?

Angular 如何在执行函数和方法调用时确定mat progressbar中的百分比值?,angular,angular-material2,Angular,Angular Material2,目前,我有一个应用程序,它可以读取包含大量数据的多个CSV文件,并对内容进行一些计算、转换、解析、附加和格式化,然后在对话框的列表中预览清理后的数据(最终形式) 过程 // Call to read the files fileReader(files: FileList, i: number): void { const self = this; const file = files[i]; const reader = new FileReader();

目前,我有一个应用程序,它可以读取包含大量数据的多个CSV文件,并对内容进行一些计算、转换、解析、附加和格式化,然后在对话框的列表中预览清理后的数据(最终形式)

过程

  // Call to read the files
  fileReader(files: FileList, i: number): void {
    const self = this;
    const file = files[i];
    const reader = new FileReader();

    reader.readAsBinaryString(file);
    reader.onload = function (e) {
      self.fileReloader(e, files, i);
    };
  }


  // Perform process of all file content while there is some to read
  // otherwise end the process.
  fileReloader(e: any, files: FileList, i: number): void {
    const bin = e.target.result;

    try {

      // Do parsing, converting the content of CSV file.
      ... Omitted lengthy codes


      // Load another file if there is any.
      if (i < files.length - 1) {
        // Load the next file
        this.fileReader(files, i + 1);

      } else {

        // If there is none to CSV files to read at this point which ends
        // the whole process and opens a dialog.

      }

    } catch (error) {
      throw something_good;
    }
  }
//调用以读取文件
fileReader(文件:文件列表,i:编号):void{
const self=这个;
常量文件=文件[i];
const reader=new FileReader();
reader.readAsBinaryString(文件);
reader.onload=函数(e){
self.fileReloader(e,files,i);
};
}
//当有一些内容需要读取时,执行所有文件内容的处理
//否则就结束这个过程。
fileReloader(e:any,files:FileList,i:number):void{
const bin=e.target.result;
试一试{
//进行解析,转换CSV文件的内容。
…省略了冗长的代码
//加载另一个文件(如果有)。
if(i
用法

  onFileSelect(e: any): void {
    const target: DataTransfer = <DataTransfer>(e.target);
    this.fileReader(target.files, 0);
  }
onFileSelect(e:any):无效{
const-target:DataTransfer=(e.target);
此.fileReader(target.files,0);
}

如您所见,这是一个递归调用,其中会发生一些冗长的过程。但是,当进程正在进行时,如何确定进度条100%的值和增量?我可以通过在进度条中使用不确定模式来实现这一点,但我想要一个确定模式

我会有一个
Subject()
,它从
0-100
然后我会让progressbar订阅这些值

<mat-progress [value]="progressSubject$ | async"></mat-progress>
然后在每个文件完成后处理调用

progressSubject.next(filePercent * i);

我会有一个
Subject()
,它从
0-100
然后我会让progressbar订阅这些值

<mat-progress [value]="progressSubject$ | async"></mat-progress>
然后在每个文件完成后处理调用

progressSubject.next(filePercent * i);

就我所见,您只需要在每次读取时使用类似currentIndex/files.length*100的值设置progressbar值,您只需在每次读取时使用currentIndex/files.length*100之类的值设置progressbar值。您好,我得到的
属性'emit'在类型'Subject'上不存在。
正在进行中\u Subject.emit()方法您可能正试图说
下一步()
它现在正在工作?我必须做一个
constfilepercent=100/files.length-1以获取100的值。啊,很抱歉发射。我将更改我的答案:)您好,我得到的
属性“emit”在“Subject”类型上不存在
正在进行中\u Subject.emit()方法可能您正在尝试说
next()
它正在工作?我必须做一个
constfilepercent=100/files.length-1以获取100的值。啊,很抱歉发射。我会改变我的答案:)