Angular 如何在执行函数和方法调用时确定mat progressbar中的百分比值?
目前,我有一个应用程序,它可以读取包含大量数据的多个CSV文件,并对内容进行一些计算、转换、解析、附加和格式化,然后在对话框的列表中预览清理后的数据(最终形式) 过程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();
// 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的值。啊,很抱歉发射。我会改变我的答案:)