Skip to content

Instantly share code, notes, and snippets.

@miller45
Created December 11, 2019 16:44
Show Gist options
  • Save miller45/54d244d9cad85a0d964f5271368de912 to your computer and use it in GitHub Desktop.
Save miller45/54d244d9cad85a0d964f5271368de912 to your computer and use it in GitHub Desktop.
whenNilPipe for angular
/*
* @author RKlein
*/
import { WhenNilPipe } from "./whennil.pipe";
describe('WhenNilPipe', () => {
it('converts null to "--"', () => {
let converter = new WhenNilPipe();
expect(converter.transform(null, "--")).toEqual("--");
});
it('converts undefined to "--"', () => {
let converter = new WhenNilPipe();
expect(converter.transform(undefined, "--")).toEqual("--");
});
it('leaves a defined string alone', () => {
let converter = new WhenNilPipe();
expect(converter.transform("We are not nil", "--")).toEqual("We are not nil");
});
it('leaves a defined number alone', () => {
let converter = new WhenNilPipe();
expect(converter.transform(42, "--")).toEqual(42);
});
it('does *not* convert an empty string to "--"', () => {
let converter = new WhenNilPipe();
expect(converter.transform('', "--")).toEqual('');
});
it('*does* convert an empty string to "--" if we explicitly say so', () => {
let converter = new WhenNilPipe();
expect(converter.transform('', "--", true)).toEqual('--');
});
it('does *not* convert an empty array to "--"', () => {
let converter = new WhenNilPipe();
expect(converter.transform([], "--")).toEqual([]);
});
it('*does* convert an empty array to "--" if we explicitly say so', () => {
let converter = new WhenNilPipe();
expect(converter.transform([], "--", true)).toEqual('--');
});
});
/*
* @author RKlein
*/
import { Injectable, Pipe, PipeTransform } from '@angular/core';
import * as _ from 'lodash';
/**
* If the value is null/undefined just display an alternative text
* Usage Demo:
```html
<div>{{result?.value|whenNil:'--'}}</div>
```
* If any empty string or empty collection should also trigger the empty text then add true as last parameter
*/
@Pipe({
name: 'whenNil'
})
@Injectable()
export class WhenNilPipe implements PipeTransform {
transform(value: any, nilText: string, emptyAlso:boolean=false): string {
if (_.isNil(value)) {
return nilText;
}
if(emptyAlso && _.isEmpty(value)){
return nilText;
}
return value;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment