J'ai un mat-horizontal-stepper
où je définis la propriété linéaire comme true. Lorsque toutes les étapes sont valides à partir de maintenant, je peux accéder aux étapes précédentes en cliquant sur l'en-tête ou l'étiquette. Je ne veux pas de cette propriété.
J'ai besoin de naviguer uniquement à travers les boutons.
J'ai essayé de désactiver la fonction de pointeur avec:
.mat-horizontal-stepper-header{
pointer-events: none;
}
mais cela n'a pas fonctionné.
J'ai besoin d'arrêter de naviguer en cliquant sur en-tête ou d'activer une fonction en cliquant sur l'en-tête stepper.
Définissez editable sur false pour mat-step
<mat-step editable="false"> ... </mat-step>
Pour obtenir un événement sur l'en-tête, cliquez sur this-
<mat-horizontal-stepper (selectionChange)="stepClick($event)" [linear]="isLinear" #stepper="matHorizontalStepper">
Dans ts fichier le composant -
stepClick(ev) {console.log(ev)}
Ce que vous avez posté à l'origine:
.mat-horizontal-stepper-header{
pointer-events: none;
}
fonctionne, tant que vous ajoutez ::ng-deep
à la classe CSS. Comme ça:
::ng-deep .mat-horizontal-stepper-header {
pointer-events: none !important;
}
Assurez-vous également que vous utilisez le horizontal stepper au lieu du vertical one. Cela importe évidemment lorsque vous appelez la classe CSS appropriée.
Pour activer une fonction lorsque vous cliquez sur l'en-tête stepper, vous pouvez vous abonner à MatStepper.selectionChange
. Il est émis lors du changement d’étape et vous donne des informations sur l’étape précédente et sur l’étape sélectionnée.
html:
<mat-horizontal-stepper #stepper[linear]="true">
<mat-step label="firstStep">
...
</mat-step>
</mat-horizontal-stepper>
ts:
class ExampleComponent implements OnInit {
@ViewChild('stepper') stepper: MatStepper;
ngOnInit() {
this.stepper.selectionChange.subscribe(selection => {
console.log(selection.selectedStep)
console.log(selection.previouslySelectedStep)
}
}
Lorsque l'étape sélectionnée est la dernière, vous pouvez l'utiliser pour définir editable = false
dans toutes les étapes précédentes:
this.stepper._steps.forEach(step => step.editable = false);