Méthode 1
Une façon simple de confirmer est d'utiliser l'alerte de confirmation native du navigateur. Le modèle peut comporter un bouton ou un lien.
<button type=button class="btn btn-primary" (click)="clickMethod('name')">Delete me</button>
Et la méthode du composant peut être quelque chose comme ci-dessous.
clickMethod(name: string) {
if(confirm("Are you sure to delete "+name)) {
console.log("Implement delete functionality here");
}
}
Méthode 2
Une autre façon d'obtenir une boîte de dialogue de confirmation simple est d'utiliser les composants bootstrap angulaires tels que ng-bootstrap ou ngx-bootstrap . Vous pouvez simplement installer le composant et utiliser le composant modal.
- Exemples de modales utilisant ng-bootstrap
-
Exemples de modales utilisant ngx-bootstrap .
Méthode 3
Vous trouverez ci-dessous une autre façon de mettre en œuvre un simple popup de confirmation en utilisant angular2/material
que j'ai mis en œuvre dans mon projet.
app.module.ts
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { ConfirmationDialog } from './confirm-dialog/confirmation-dialog';
@NgModule({
imports: [
...
FormsModule,
ReactiveFormsModule
],
declarations: [
...
ConfirmationDialog
],
providers: [ ... ],
bootstrap: [ AppComponent ],
entryComponents: [ConfirmationDialog]
})
export class AppModule { }
dialogue de confirmation.ts
import { Component, Input } from '@angular/core';
import { MdDialog, MdDialogRef } from '@angular/material';
@Component({
selector: 'confirm-dialog',
templateUrl: '/app/confirm-dialog/confirmation-dialog.html',
})
export class ConfirmationDialog {
constructor(public dialogRef: MdDialogRef<ConfirmationDialog>) {}
public confirmMessage:string;
}
dialogue-de-confirmation.html
<h1 md-dialog-title>Confirm</h1>
<div md-dialog-content>{{confirmMessage}}</div>
<div md-dialog-actions>
<button md-button style="color: #fff;background-color: #153961;" (click)="dialogRef.close(true)">Confirm</button>
<button md-button (click)="dialogRef.close(false)">Cancel</button>
</div>
app.component.html
<button (click)="openConfirmationDialog()">Delete me</button>
app.component.ts
import { MdDialog, MdDialogRef } from '@angular/material';
import { ConfirmationDialog } from './confirm-dialog/confirmation-dialog';
@Component({
moduleId: module.id,
templateUrl: '/app/app.component.html',
styleUrls: ['/app/main.css']
})
export class AppComponent implements AfterViewInit {
dialogRef: MdDialogRef<ConfirmationDialog>;
constructor(public dialog: MdDialog) {}
openConfirmationDialog() {
this.dialogRef = this.dialog.open(ConfirmationDialog, {
disableClose: false
});
this.dialogRef.componentInstance.confirmMessage = "Are you sure you want to delete?"
this.dialogRef.afterClosed().subscribe(result => {
if(result) {
// do confirmation actions
}
this.dialogRef = null;
});
}
}
index.html => ajout de la feuille de style suivante
<link rel="stylesheet" href="node_modules/@angular/material/core/theming/prebuilt/indigo-pink.css">
1 votes
"Le moyen le plus simple serait d'utiliser quelque chose comme angular2-modal comme vous l'avez mentionné. Sinon, vous devrez en construire un vous-même, et je n'appellerais pas cela un moyen facile. Avez-vous vu sur le lien que vous avez fourni qu'il y avait des exemples de plunker montrant l'utilisation :) embed.plnkr.co/mbPzd8
0 votes
Je vois, alors ce sera une bonne idée de créer un composant avec la popup de confirmation qui a 2 boutons et quand on clique dessus, il exécute une fonction dans le composant principal. Dans l'exemple, il utilise la touche 5 pour fermer la boîte de dialogue, je dois la fermer et appeler une fonction. Quoi qu'il en soit, je vais essayer d'être aussi simple et clair que possible et je posterai les résultats.
0 votes
Il existe également d'autres modales, qui peuvent avoir d'autres fonctions intégrées que vous pourriez souhaiter, mais vos exigences ne semblent pas trop difficiles, donc je suppose que beaucoup d'entre elles vous conviendraient, mais si vous le souhaitez, naviguez et trouvez celle qui vous convient. Voici quelques exemples : npmjs.com/search?q=angular+2+modal Essayez-les et revenez vers SO si vous rencontrez des problèmes ! Bon codage ! :)