Est-il possible dans Angular 2 d'appliquer un tuyau sous condition ? Je voudrais faire quelque chose comme :
{{ variable.text | (variable.value ? SomePipe : OtherPipe) }}
Si ce n'est pas le cas, quelle est la meilleure façon d'obtenir cet effet ?
Est-il possible dans Angular 2 d'appliquer un tuyau sous condition ? Je voudrais faire quelque chose comme :
{{ variable.text | (variable.value ? SomePipe : OtherPipe) }}
Si ce n'est pas le cas, quelle est la meilleure façon d'obtenir cet effet ?
Comme d'autres l'ont fait remarquer, vous pouvez utiliser la syntaxe de {{condition ? (value | pipe1) : (value2 | pipe2 )}}
.
Mais il est bon de savoir que le paramètre de format d'un tube peut également être dynamique. Par exemple, voici un exemple de nombre qui peut être formaté avec une précision élevée ou faible. La condition est passée à une méthode, qui va créer un texte de formatage de manière conditionnelle.
// in template
{{ value | number:getFormat(true) }}
// in .ts
public getFormat(highPrecision = false): string {
const digits = highPrecision ? 3 : 2;
return `1.${digits}-${digits}`;
}
Donc, oui, vous pouvez utiliser une condition pour choisir entre deux tubes. Mais dans certains cas, vous pouvez préférer (ou n'avoir besoin) d'utiliser qu'un seul tube avec un paramètre de format conditionnel. .
Comme cette syntaxe n'est pas prise en charge, je pense que la seule façon de procéder est d'implémenter un autre tube pour gérer la condition :
@Pipe({
name: 'condition'
})
export class ConditionPipe {
transform(val,conditions) {
let condition = conditions[0];
let conditionValue = conditions[1];
if (condition===conditionValue) {
return new Pipe1().transform(val);
} else {
return new Pipe2().transform(val);
}
}
}
Et utilise-le de cette façon :
@Component({
selector: 'app'
template: `
<div>
{{val | condition:cond:1}}<br/>
</div>
`,
pipes: [ Pipe1, Pipe2, ConditionPipe ]
})
export class App {
val:string = 'test';
cond:number = 1;
}
Voir ce plunkr : https://plnkr.co/edit/KPIA5ly515xZk4QZx4lp?p=preview .
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Je pense que ça devrait marcher. Avez-vous essayé ?
1 votes
Oui, cela provoque des erreurs d'analyse des modèles.