Angular 2 Pipe under condition Angular 2 Pipe under condition angular angular

Angular 2 Pipe under condition


You need to change the syntax a bit:

{{variable.value ? (variable.text | SomePipe) : (variable.text | pipe2)}}

Plunker example


You could also use ngIf

<span *ngIf="variable.value; else elseBlock">{{ variable.text | SomePipe }}</span><ng-template #elseBlock>{{ variable.text | OtherPipe }}</ng-template>

I find it useful in case the line becomes too long.


Since such syntax isn't supported, I think that the only way to do that is to implement another pipe to handle the 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);    }  }}

And use it this way:

@Component({  selector: 'app'  template: `    <div>      {{val | condition:cond:1}}<br/>    </div>  `,  pipes: [ Pipe1, Pipe2, ConditionPipe ]})export class App {  val:string = 'test';  cond:number = 1;}

See this plunkr: https://plnkr.co/edit/KPIA5ly515xZk4QZx4lp?p=preview.