10

Ví dụ này vẫn mãi mãi trên màn hình:Làm thế nào tôi có thể thiết lập thời gian của một bữa ăn nhẹ-bar trong angular2 (material2)

snack-bar-demo.ts

import {Component, ViewContainerRef} from '@angular/core'; 
import {MdSnackBar, MdSnackBarConfig} from '@angular/material'; 

@Component({ 
    moduleId: module.id, 
    selector: 'snack-bar-demo', 
    templateUrl: 'snack-bar-demo.html', 
}) 
export class SnackBarDemo { 
    message: string = 'Snack Bar opened.'; 
    actionButtonLabel: string = 'Retry'; 
    action: boolean = false; 

    constructor(
     public snackBar: MdSnackBar, 
     public viewContainerRef: ViewContainerRef) { } 

    open() { 
    let config = new MdSnackBarConfig(this.viewContainerRef); 
    this.snackBar.open(this.message, this.action && this.actionButtonLabel, config); 
    } 
} 

Làm thế nào tôi có thể làm cho nó biến mất sau 2 giây (set thời gian/thời gian chờ bằng cách nào đó)?

Trả lời

7

này nên làm việc

open(msg,t=2000) { 
     let config = new MdSnackBarConfig(this.viewContainerRef); 
     let simpleSnackBarRef = this.snackBar.open(msg, 'ok, gotcha', config); 
     setTimeout(simpleSnackBarRef.dismiss.bind(simpleSnackBarRef), t); 
    } 
+0

này hoạt động. Cảm ơn bạn!! Tôi tự hỏi liệu bạn có thực sự làm điều này theo cách này để đạt được hành vi được thiết kế hay không có gì đó trong MdSnackBar bị xáo trộn như mô tả ở đây: [snack-bar] (https://material.google.com/components/snackbars-toasts. html # snackbars-toasts-usage) > "Chúng thoát ra bằng cách vuốt tắt màn hình hoặc tự động biến mất sau một thời gian chờ hoặc tương tác của người dùng ở nơi khác (chẳng hạn như triệu hồi một bề mặt hoặc hoạt động mới)." – johnerfx

+0

Tôi không nghĩ có bất cứ điều gì như thế vào lúc này. Nếu bạn nhìn vào phương thức [open] (https://github.com/angular/material2/blob/master/src/lib/snack-bar/snack-bar.ts), bạn sẽ không tìm thấy bất kỳ thủ tục loại bỏ theo thời gian nào. Điều đó nói rằng, tình trạng thanh snack vẫn là _Proof-of-concept_ [npm] (https://www.npmjs.com/package/@angular/material). Họ sẽ có thể/hy vọng thêm rằng những thứ tốt để sắp xếp chặt chẽ hơn nó với các thông số kỹ thuật thiết kế dự định bạn liên kết. – undefinederror

10

Với nguyên liệu góc 2.0.0-alpha.11, Bây giờ bạn có thể thêm thời gian chờ để snackbar.

open() { 
    let config = new MdSnackBarConfig(); 
    config.duration = 10; 
    this.snackBar.open("Message", "Action Label", config); 
} 
+0

Wow, bạn đã nhanh chóng. Tôi cũng muốn cập nhật điều này, chỉ chờ đợi bản phát hành :) Cảm ơn bạn. – johnerfx

1

Thời gian có thể được vượt qua thông qua các đối tượng cấu hình tùy chọn:

this.snackBar.open(
    this.message, 
    this.action && this.actionButtonLabel, { 
     duration: 2000 
    } 
); 
+0

Cảm ơn bạn đã chỉnh sửa snorkpete –

Các vấn đề liên quan