Angular 2 Pipe under condition
You need to change the syntax a bit:
{{variable.value ? (variable.text | SomePipe) : (variable.text | pipe2)}}
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.