如何比较来自api的jobId和角度材料中的mat-table

Posted

技术标签:

【中文标题】如何比较来自api的jobId和角度材料中的mat-table【英文标题】:How to compare jobId from api and of mat-table in angular material 【发布时间】:2019-02-02 20:08:25 【问题描述】:

我有一个显示 Jobs 的 mat-table 以及它的详细信息,例如 jobId、executionId、status 等。 此外,我有一个 webSocket,它发送作业的通知状态,即正在运行、成功或失败。 我的 WebSocket 现在的问题是它不会根据项目或用户区分作业,这意味着如果用户 2 运行项目,那么我也会收到作业正在运行的通知。

我想在我的代码中设置一个条件,这样当我点击我的作业列表旁边的停止按钮时,代码应该比较我的 jobId 和状态,并从 webSocket 中获取作业是否停止的响应。

我的停止作业按钮的 html 代码:

 <button *ngIf="index === 0"
                    mat-icon-button
                    (click)="stop_exec_job(element)"
                    matTooltip="Stop Executing the Job"
                    [disabled]="element.status == 'Completed' || element.status == 'FINISH'"
                >
                    <!-- Edit icon for row -->
                    <i class="material-icons" style="color:red"> stop </i>
                </button>

在 TypeScript 中停止函数代码:

stop_exec_job(element) 
    if (element.status == 'RUNNING' || element.status == 'Pending')  
        //Api to stop Job Execution
        this.recommendationService
            .stopJobExecution(element.jobId,element.status)
            .subscribe(data => 
                this.executeJobStop = data;
            );
        this.displaySpinner = false;

        this.snakbar.statusBar('Job Execution Stopped', 'Sucess');
     else 
        this.snakbar.statusBar('Job Failed to start', 'Failure');
    

WebSocket 代码:

this.messageService.messageReceived$.subscribe(data => 
        let status: any = data;
        this.snakbar.statusBar(
            "Platform job status - " + status.message,
            "Info"
        );
);

我想通过使用 if-else 条件从 WebSocket 接收与我已停止的作业相对应的通知。 我该如何做到这一点??

【问题讨论】:

【参考方案1】:

我不知道我是否了解您想要什么,我也不知道 this.recommendationService.stopJobExecution(jobId,status) 返回什么,但也许您必须将snackbar-action 放入订阅中,例如:

...
this.recommendationService
            .stopJobExecution(element.jobId,element.status)
            .subscribe(data => 
                this.executeJobStop = data;
                if(data.stopped) 
                    this.snakbar.statusBar('Job Execution Stopped', 'Success');
                
            );
....

【讨论】:

是的,现在我只是显示一个 snakbar 但我实际上不知道作业是否停止。所以我想从 webSocket 获取作业状态,即 this.messageService.messageReceived$.subscribe (数据...... 尝试把它放在订阅中你应该知道的:)

以上是关于如何比较来自api的jobId和角度材料中的mat-table的主要内容,如果未能解决你的问题,请参考以下文章

如何将角度材料表与后端数据动态绑定?

如何在角度材料 2 中使用 mat-chip 和自动完成来保存选定的对象

角度材料 mat-cell 内容基于另一个 mat-cell 值而变化

减少角度材料树中的线高

角度材料 - mat-error 不显示输入字段的错误消息

角度材料步进更改图标颜色