Files
bbq/src/app/shared/components/file-manager/file-manager-img.directive.ts
2021-11-26 16:34:35 +08:00

40 lines
1.0 KiB
TypeScript

import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core';
import { ModalHelper } from '@delon/theme';
import { FileManagerImgComponent } from './file-manager-img.component';
@Directive({ selector: '[dialog-img]' })
export class FileManagerImgDirective {
@Input() multiple: boolean | number = false;
@Input() field?: string;
@Output() readonly selected = new EventEmitter<any>();
constructor(private modalHelper: ModalHelper) {}
@HostListener('click')
_click(): void {
this.modalHelper
.create(
FileManagerImgComponent,
{
multiple: this.multiple
},
{
size: 1000,
modalOptions: {
nzClosable: false
}
}
)
.subscribe((res: any) => {
if (Array.isArray(res)) {
let ret = res.length > 0 && !this.multiple ? res[0] : res;
if (this.field && ret) {
ret = ret[this.field];
}
this.selected.emit(ret);
}
});
}
}