import {Component, OnInit, ViewContainerRef} from '@angular/core';
import {Plan} from '../../domain/plan';
import {PlanService} from './plan.service';
import {NzModalService} from 'ng-zorro-antd/modal';
import {PlanCreateComponent} from './plan-create/plan-create.component';
import {NzMessageService} from 'ng-zorro-antd';
@Component({
selector: 'app-plan',
templateUrl: './plan.component.html',
styleUrls: ['./plan.component.css']
})
export class PlanComponent implements OnInit {
constructor(private service: PlanService,
private modal: NzModalService,
private message: NzMessageService,
private viewContainerRef: ViewContainerRef) {
}
/**
* 创建删除对话框
*/
createDeleteModal(plan: Plan): void {
const modal = this.modal.confirm({
nzTitle: '删除计划',
nzContent: '确定删除计划" ' + plan.name + ' "吗?',
nzOnOk: () => {
// 调用api执行删除操作
this.deletePlan(plan.id);
}
});
// 当对话框开启时,打印日志
modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!'));
// 当对话框关闭时,返回结果
modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result));
}
/**
* 调用后台api删除计划
* @param id 计划id
*/
deletePlan(id: string): void {
// 提示删除中
const messageId = this.message.loading('正在删除中...', {nzDuration: 0}).messageId;
this.service.deletePlan(id).subscribe(
// 若调用api成功,打印api返回值,提示创建删除成功,并刷新列表
(data) => {
console.log('next: ' + data);
this.message.remove(messageId);
this.message.success('删除成功!');
this.refreshData();
},
// 若调用api失败,打印失败日志,提示删除失败
(error) => {
console.log('error: ' + error);
this.message.error('删除失败!');
this.message.remove(messageId);
}
);
}
/**
* 刷新数据
*/
refreshData(): void {
this.listPlans();
}
}