Comment puis-je utiliser angular matériel 2 boutons FAB pour ouvrir une boîte de dialogue d'entrée de navigation? Cela peut être fait en HTML de cette façon.
<button type="button">
<label for="file-input">click</label>
</button>
<input type="file" id="file-input" style="display:none">
J'ai essayé de suivre la même approche avec le matériau 2, mais cela ne fonctionne pas.
<button md-mini-fab type="button">
<label for="fileToUpload">
<md-icon>add</md-icon>
</label>
</button>
<input id="fileToUpload" type="file" style="display:none;">
Y a-t-il d'autres façons de fonctionner? Merci.
Voici une solution simple:
<button (click)="fileInput.click()">
<md-icon>library_add</md-icon>
<span>Select</span>
<input #fileInput type="file" (change)="onFileInput($event)" style="display:none;" />
</button>
Vous devez simplement déclencher le click
pour votre entrée de fichier.
<button md-mini-fab type="button" onclick="document.getElementById('fileToUpload').click()">
<label for="fileToUpload"><md-icon>add</md-icon></label>
</button>
<input id="fileToUpload" type="file" style="display:none;">
Essaye ça:
<input #file type="file" [hidden]="true" accept="image/*" (change)="upload(file.files)">
<button mat-button #upload (click)="file.click()">Upload file</button>
<mat-button>
provient de https://material.angular.io
Nous masquons le bouton d'entrée de base et lions le bouton de matériau au téléchargement de fichier.
Je ne suis pas sûr de vos cas, mais dans mon application Angular5, j'ai utilisé cette structure HTML pour télécharger des fichiers sur le serveur:
<label for="uploadPicture" class="upload-file">
<mat-icon>add_a_photo</mat-icon>
</label>
<input type="file"
id="uploadPicture"
class="hidden-input"
accept="image/jpeg, .jpeg, image/png, .png, image/pjpeg, .jpg"
(change)="selectFile($event.target.files[0])">
Dans mon cas, cette solution fonctionne très bien. Pas besoin de déclencher un événement click
, car lorsque vous cliquez sur <label>
qui concerne input
c'est la même chose que click
sur input
.
Vous pouvez utiliser un bouton et une entrée. Assurez-vous que le bouton ne contient pas d'entrée.
<button (click)="fileInput.click()">Upload</button>
<input #fileInput type="file" (change)="onFileInput($event)" multiple style="display:none;" />
Vous pouvez également utiliser une étiquette contenant une entrée.
<label>
<mat-icon>add</mat-icon>
<input type="file" (change)="onFileInput($event)" multiple />
</label>
Il peut s'agir d'une combinaison de md-button, md-dialog et md-input. Le bouton mini fab doit avoir un événement click pour déclencher le composant md-dialog.
<button md-mini-fab type="button" (click)="openDialog()">
<label for="fileToUpload">
<md-icon>add</md-icon>
</label>
</button>
Dans le composant md-dialog, le champ d'entrée md peut être ajouté.
<h1 md-dialog-title>Dialog</h1>
<div md-dialog-actions>
<md-input-container>
<input mdInput id="fileToUpload" type="file">
</md-input-container>
<p>
<button md-button (click)="dialogRef.close('Option 1')">Option 1</button>
<button md-button (click)="dialogRef.close('Option 2')">Option 2</button>
</p>
</div>
Veuillez voir cet exemple Plunker pour obtenir tous les détails/spécifiques.