40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			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);
 | 
						|
        }
 | 
						|
      });
 | 
						|
  }
 | 
						|
}
 |