File

src/app/component/file-upload/file-upload.directive.ts

Metadata

Selector [stbFileUpload],[stbuiFileUpload]

Index

Properties
Methods
Outputs
HostListeners

Constructor

constructor(service: FileUploadService)
Parameters :
Name Type Optional
service FileUploadService No

Outputs

uploader
Type : EventEmitter<any>

HostListeners

change
Arguments : '$event'
change(event: Event)
dragenter
Arguments : '$event'
dragenter(event)
dragover
Arguments : '$event'
dragover(event)
drop
Arguments : '$event'
drop(event: Event)

Methods

dataTransfer
dataTransfer(event)
Parameters :
Name Optional
event No
Returns : void
detectFiles
detectFiles(event)
Parameters :
Name Optional
event No
Returns : void
stopEvent
stopEvent(event)
Parameters :
Name Optional
event No
Returns : void
uploadSingle
uploadSingle()
Returns : void

Properties

Public currentUpload
Type : Upload
Private selectedFiles
Type : FileList
import { Directive, HostListener, Output, EventEmitter } from '@angular/core';
import { FileUploadService } from './file-upload.service';
import { Upload } from './file-upload.model';

@Directive({
  selector: '[stbuiFileDrop], [stbFileDrop]'
})
export class FileUploadDropDirective {
  @Output() dropped = new EventEmitter();

  constructor() {}

  @HostListener('drop', ['$event'])
  onDrop($event) {
    $event.preventDefault();
    this.dropped.emit($event.dataTransfer.files);
  }
}

@Directive({
  selector: '[stbFileUpload],[stbuiFileUpload]'
})
export class FileUploadDirective {
  public currentUpload: Upload;
  private selectedFiles: FileList;

  @Output() uploader: EventEmitter<any> = new EventEmitter<any>();

  @HostListener('change', ['$event'])
  onChange(event: Event) {
    this.detectFiles(event);
    this.uploadSingle();
  }

  @HostListener('drop', ['$event'])
  onDrop(event: Event) {
    this.stopEvent(event);
    this.dataTransfer(event);
    this.uploadSingle();
  }

  @HostListener('dragenter', ['$event'])
  onDragEnter(event) {
    this.stopEvent(event);
  }

  @HostListener('dragover', ['$event'])
  onDragOver(event) {
    this.stopEvent(event);
  }

  constructor(private service: FileUploadService) {}

  stopEvent(event) {
    event.stopPropagation();
    event.preventDefault();
  }

  dataTransfer(event) {
    this.selectedFiles = event.dataTransfer.files;
  }

  detectFiles(event) {
    this.selectedFiles = event.target.files;
  }

  uploadSingle() {
    let file = this.selectedFiles.item(0);
    this.currentUpload = new Upload(file);
    // this.service.startUpload(this.currentUpload);
    this.uploader.emit(this.currentUpload);
  }
}

result-matching ""

    No results matching ""