代码之家  ›  专栏  ›  技术社区  ›  Cpt Kitkat Anu

如何在角度7中添加snakbar函数

  •  1
  • Cpt Kitkat Anu  · 技术社区  · 6 年前

    我有一张6列的垫子桌。在第5列中,它显示作业的状态,即已完成、正在运行或挂起。 我创建了两个按钮,即停止和重新运行。 我想要一个snakbar通知当用户点击停止按钮时,作业应该停止执行,用户得到一个snakbar通知。 同样,如果用户单击重新运行按钮,那么snakbar应该显示一条消息。

    我已经创建了一个示例 stackblitz here.

    HTML代码:

    <div class="main-content">
    <mat-toolbar>
        <mat-progress-bar
            mode="indeterminate"
            class="mat-progress-bar"
            color ="primary"
        >
        </mat-progress-bar>
        &nbsp;&nbsp;
        <button
        mat-icon-button
        (click)="stop_exec_job()"
        matTooltip="Stop Executing the Job"
    >
        <!-- Edit icon for row -->
        <i class="material-icons" style="color:red"> stop </i>
    </button>
    
    </mat-toolbar>
    
    <div class="card">
        <div class="card-header">
            <h5 class="title">Job Execution Stats</h5>
        </div>
    
        <mat-table [dataSource]="jobExecutionStat">
            <!-- Id Column -->
            <ng-container matColumnDef="id">
                <mat-header-cell *matHeaderCellDef> ID </mat-header-cell>
                <mat-cell *matCellDef="let element">{{ element.id }} </mat-cell>
            </ng-container>
    
            <ng-container matColumnDef="exec_date">
                <mat-header-cell *matHeaderCellDef>
                    Execution Date
                </mat-header-cell>
                <mat-cell *matCellDef="let element"
                    >{{ element.exec_date }}
                </mat-cell>
            </ng-container>
    
            <!-- Weight Column -->
            <ng-container matColumnDef="curr_time_period">
                <mat-header-cell *matHeaderCellDef>
                    Current Time Period
                </mat-header-cell>
                <mat-cell *matCellDef="let element"
                    >{{ element.curr_time_period }}
                </mat-cell>
            </ng-container>
    
            <!-- Symbol Column -->
            <ng-container matColumnDef="prev_time_period">
                <mat-header-cell *matHeaderCellDef>
                    Previous Time Period
                </mat-header-cell>
                <mat-cell *matCellDef="let element"
                    >{{ element.prev_time_period }}
                </mat-cell>
            </ng-container>
    
            <ng-container matColumnDef="status">
                <mat-header-cell *matHeaderCellDef> Status </mat-header-cell>
                <mat-cell *matCellDef="let element"
                    >{{ element.status }}
                </mat-cell>
            </ng-container>
    
            <ng-container matColumnDef="actions">
                <mat-header-cell *matHeaderCellDef> </mat-header-cell>
                <mat-cell *matCellDef="let element; let index = index">
                    <button
                        mat-icon-button
                        (click)="stop_exec_job()"
                        matTooltip="Stop Executing the Job"
                    >
                        <!-- Edit icon for row -->
                        <i class="material-icons" style="color:red"> stop </i>
                    </button>
                    <!-- Delete icon for row -->
                    <button
                        class="stop_btn"
                        mat-icon-button
                        color="#b71c1c"
                        (click)="re_run_job()"
                        matTooltip="Re-Run the Job"
                    >
                        <i class="material-icons" style="color:green">
                            cached
                        </i>
                    </button>
                </mat-cell>
            </ng-container>
    
            <mat-header-row
                *matHeaderRowDef="jobExecStatDisplayedColumns"
            ></mat-header-row>
            <mat-row *matRowDef="let row; columns: jobExecStatDisplayedColumns">
            </mat-row>
        </mat-table>
    </div>
    

    手写体代码:

    import { Component, OnInit } from "@angular/core";
    import { MatTableDataSource } from "@angular/material";
    import { GlobalAppSateService } from '../../services/globalAppSate.service';
    import { DataService } from '../../services/data.service';
    import { SnakBarComponent } from '../custom-components/snak-bar/snak- 
    bar.component';
    @Component({
    selector: "app-job-execution-screen",
    templateUrl: "./job-execution-screen.component.html",
    styleUrls: ["./job-execution-screen.component.scss"]
    })
    export class JobExecutionScreenComponent implements OnInit {
    stop_btn: boolean = true;
    re_run_btn: boolean = true;
    
    
    jobExecStatDisplayedColumns = [
        "id",
        "exec_date",
        "prev_time_period",
        "curr_time_period",
        "status",
        "actions"
    ];
    
    jobExecutionStat = new MatTableDataSource<Element>(ELEMENT_DATA);
    constructor(private dataService: DataService, public globalAppSateService: 
    GlobalAppSateService, private snakbar: SnakBarComponent ) {
    
    }
    ngOnInit() {
        const project = JSON.parse(this.dataService.getObject("project"));
        if (project != null) {
            this.globalAppSateService.onMessage(project);
        }
    }
    
    
    stop_exec_job() {
    
    }
    re_run_job() {
    
    }
    }
    const ELEMENT_DATA: Element[] = [
    {
        id: 1,
        exec_date: "17-01-2016",
        prev_time_period: "2016-04,2016-05,2016-06",
        curr_time_period: "2016-08",
        status: "Completed"
    },
    {
        id: 2,
        exec_date: "17-01-2017",
        prev_time_period: "2017-04,2017-05,2017-06",
        curr_time_period: "2017-08",
        status: "Running"
    },
    {
        id: 3,
        exec_date: "27-07-2017",
        prev_time_period: "2017-45,2017-46,2017-47",
        curr_time_period: "2018-01,2018-02",
        status: "Pending"
    },
    {
        id: 4,
        exec_date: "17-10-2018",
        prev_time_period: "2017-30,2017-31,2017-32",
        curr_time_period: "2018-01,2018-02",
        status: "Completed"
    },
    {
        id: 5,
        exec_date: "21-01-2018",
        prev_time_period: "2016-01,2016-02,2016-03,2016-04",
        curr_time_period: "2016-52",
        status: "Pending"
    },
    {
        id: 6,
        exec_date: "17-01-2018",
        prev_time_period: "2017-31,2017-32,2017-33,2017-34",
        curr_time_period: "2017-52",
        status: "Running"
    }
    ];
    export interface Element {
    id: number;
    exec_date: string;
    prev_time_period: string;
    curr_time_period: string;
    status: string;
    }
    

    出于某种原因,stop和cached是图标,在我的Visual Studio中,我可以看到图标,但在stackblitz中,我无法将它们转换为图标。 只供参考,红色停止,绿色缓存重新运行

    2 回复  |  直到 6 年前
        1
  •  2
  •   Joniras    6 年前

    我看到你用过

    if(this.jobStatus == 'Running') {
      this.alert('Job Execution Stopped','Sucess');
    }
    

    乔布斯 始终是所有stati的数组(在类的顶部声明)。

    要想得到你想要的,你必须改变以下几点:

    (click)="stop_exec_job(element)"
    

    我补充说 要素 作为函数的参数。

    stop_exec_job(element) {
            if(element.status == 'Running') {
                this.alert('Job Execution Stopped','Sucess');
            }
        }
    

    我补充说 要素 作为参数,现在我真的检查了元素的状态。

    对…也一样 ReunRun-JooWork 功能。

        2
  •  0
  •   Mehr88sh    6 年前

    你可以使用 this link 在项目中实现snackbar。

    import {Component, Inject} from '@angular/core';
    import {MAT_SNACK_BAR_DATA} from '@angular/material';
    
    @Component({
      selector: 'your-snack-bar',
      template: 'passed in {{ data }}',
    })
    export class MessageArchivedComponent {
      constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) { }
    }
    
    推荐文章