J'ai un problème avec le glisser-déposer angulaire. J'ai créé un composant et une directive pour cela. J'ai essayé deux solutions, c'est la première:Angulaire 4 glisser et déposer
@HostListener('drop', ['$event']) public onDrop(evt) {
evt.preventDefault();
evt.stopPropagation();
this.background = '#eee';
let files = evt.dataTransfer.files;
let valid_files: Array<File> = [];
let invalid_files: Array<File> = [];
if (files.length > 0) {
files.forEach((file: File) => {
let ext = file.name.split('.')[file.name.split('.').length - 1];
if (this.allowed_extensions.lastIndexOf(ext) !== -1) {
valid_files.push(file);
} else {
invalid_files.push(file);
}
});
this.filesChangeEmiter.emit(valid_files);
this.filesInvalidEmiter.emit(invalid_files);
}
}
j'ai reçu un message d'erreur lorsque je laisse tomber l'image du navigateur.
files.forEach is not a function
et moi avons essayé un autre forEach comme ceci:
import { forEach } from '@angular/router/src/utils/collection';
@HostListener('drop', ['$event']) public onDrop(evt) {
evt.preventDefault();
evt.stopPropagation();
this.background = '#eee';
let files = evt.dataTransfer.files;
let valid_files: Array<File> = [];
let invalid_files: Array<File> = [];
if (files.length > 0) {
forEach(files, (file: File) => {
let ext = file.name.split('.')[file.name.split('.').length - 1];
if (this.allowed_extensions.lastIndexOf(ext) !== -1) {
valid_files.push(file);
} else {
invalid_files.push(file);
}
});
this.filesChangeEmiter.emit(valid_files);
this.filesInvalidEmiter.emit(invalid_files);
}
}
De cette façon, je suis arrivé un message d'erreur comme ceci:
./src/app/hotels/drag-n-drop/drag-n-drop.directive.ts
Module not found: Error: Can't resolve '@angular/router/src/utils/collection' in '/Users/MrFox/OneDrive/greenfox/hotel-booking-admin-frontend/src/app/hotels/drag-n-drop'
@ ./src/app/hotels/drag-n-drop/drag-n-drop.directive.ts 11:0-63
@ ./src/app/app.module.ts
@ ./src/main.ts
@ multi webpack-dev-server/client? http://localhost:4200 ./src/main.ts
je l'ai déjà importé au app.module
.