Angular 2 - 5 秒后自动关闭模式

Angular 2 - Auto Close Modal After 5 Seconds

我有一个表单模式,在提交时将表单更改为一些成功的措辞。

我想要的是当显示成功的措辞时,模态框会自动关闭(甚至会因花哨而淡出),但我不知道该怎么做。

代码如下

模态HTML(骨架)

<form>
    <md-toolbar>
        <div>Section Header</div>
        <span style="flex: auto;"></span>
        <button *ngIf="initial" md-icon-button (click)="functionCall()">
            <md-icon>save</md-icon>
        </button>
        <button md-icon-button md-dialog-close>
            <md-icon>close</md-icon>
        </button>
    </md-toolbar>
    <md-dialog-content>
        <md-input-container [hidden]="!initial">
            <input mdInput placeholder="Enter text" [(ngModel)]="fieldModel">
        </md-input-container>
        <p [hidden]="initial">Success.</p>
    </md-dialog-content>
</form>

模态组件(骨架)

export class TestComponent implements OnInit {
    fieldModel: string;
    initial = true;

    constructor() {}
    functionCall() {
        this.serviceCall.serviceName(this.fieldModel)
            .subscribe(data => {
                //On Success
                this.initial = false;
            }
    }
}

一种方法是利用 RxJS 方法:

this.serviceCall.serviceName(this.fieldModel)
  .do(() => this.initial = false)
  .delay(5000)
  .subscribe(() => this.initial = true);

这将在服务调用完成后将 initial 标志设置为 falsewait five seconds,然后将其设置回 true

如果您想要淡入淡出,一个简单的选择是使用 CSS 类 设置带有过渡的不透明度。或者,查看 Angular 的内置动画支持。