Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(module:modal): support triggerOk/triggerCancel to trigger nzOnOk… #1201

Merged
merged 1 commit into from
Mar 23, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions components/modal/doc/index.en-US.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ The dialog created by the service method `NzModalService.xxx()` will return a `N
| close() | Close (hide) the dialog. <i>Note: When used for a dialog created as a service, this method will destroy the dialog directly (as with the destroy method)</i> |
| destroy() | Destroy the dialog. <i>Note: Used only for dialogs created by the service (non-service created dialogs, this method only hides the dialog)</i> |
| getContentComponent() | Gets the Component instance in the contents of the dialog for `nzContent`. <i> Note: When the dialog is not initialized (`ngOnInit` is not executed), this function will return `undefined`</i> |
| triggerOk() | Manually trigger nzOnOk |
| triggerCancel() | Manually trigger nzOnCancel |

#### ModalButtonOptions (used to customize the bottom button)

Expand Down
4 changes: 3 additions & 1 deletion components/modal/doc/index.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,9 @@ constructor(modal: NzModalService) {
| open() | 打开(显示)对话框。<i>若对话框已销毁,则调用此函数将失效</i> |
| close(result: any) | 关闭(隐藏)对话框。<i>注:当用于以服务方式创建的对话框,此方法将直接 销毁 对话框(同destroy方法)</i> |
| destroy(result: any) | 销毁对话框。<i>注:仅用于服务方式创建的对话框(非服务方式创建的对话框,此方法只会隐藏对话框)</i> |
| getContentComponent() | 获取对话框内容中`nzContent`的Component实例instance。<i>注:当对话框还未初始化完毕(`ngOnInit`未执行)时,此函数将返回`undefined`</i> |
| getContentComponent() | 获取对话框内容中`nzContent`的Component实例instance。<i>注:当对话框还未初始化完毕(`ngOnInit`未执行)时,此函数将返回`undefined`</i> |
| triggerOk() | 手动触发nzOnOk |
| triggerCancel() | 手动触发nzOnCancel |

#### ModalButtonOptions(用于自定义底部按钮)

Expand Down
6 changes: 6 additions & 0 deletions components/modal/nz-modal-ref.class.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ export abstract class NzModalRef<T = any, R = any> { // tslint:disable-line:no-a
abstract close(result?: R): void;
abstract destroy(result?: R): void;

/**
* Trigger the nzOnOk/nzOnCancel by manual
*/
abstract triggerOk(): void;
abstract triggerCancel(): void;

// /**
// * Return the ComponentRef of nzContent when specify nzContent as a Component
// * Note: this method may return undefined if the Component has not ready yet. (it only available after Modal's ngOnInit)
Expand Down
8 changes: 8 additions & 0 deletions components/modal/nz-modal.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,14 @@ export class NzModalComponent<T = any, R = any> extends NzModalRef<T, R> impleme
this.close(result);
}

triggerOk(): void {
this.onClickOkCancel('ok');
}

triggerCancel(): void {
this.onClickOkCancel('cancel');
}

getInstance(): NzModalComponent {
return this;
}
Expand Down
17 changes: 17 additions & 0 deletions components/modal/nz-modal.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,23 @@ describe('NzModal', () => {
tick(600);
expect(modalService.openModals.length).toBe(1);
}));

it('should trigger nzOnOk/nzOnCancel', () => {
const spyOk = jasmine.createSpy('ok spy');
const spyCancel = jasmine.createSpy('cancel spy');
const modalRef: NzModalRef = modalService.create({
nzOnOk: spyOk,
nzOnCancel: spyCancel
});

fixture.detectChanges();

modalRef.triggerOk();
expect(spyOk).toHaveBeenCalled();

modalRef.triggerCancel();
expect(spyCancel).toHaveBeenCalled();
});
});
});

Expand Down