Useful Typescript / Angular code snippets

Below are some useful code snippets I wrote. I use them as a reference, because they when I occasionally need them, I never know them by heart. Hope this will help you too. If so, let me know in the comments.

Convert enum to array

 export function enumToArray<T>(enumObj: object): T[] {
  const enumKeys: string[] = Object.keys(enumObj);
  const enumValues = enumKeys.map((key) => key as any).map((v) => enumObj[v] as any);
  return enumValues as T[];
} 

Set all controls in Angular dynamic form to readonly

 export function setFormReadonly(form: FormGroup, isReadonly: boolean) {
  Object.keys(form.controls).forEach((key) => {
    const control = form.controls[key];
    if (isReadonly) {
      control.disable();
    } else {
      control.enable();
    }
  });
} 

Get unique values of array

Works for array of primitive values only

 export function getUniqueValues<T>(arr: T[]): T[] {
  return Array.from(new Set(arr));
} 

Strip HTML tags from string

 export function stripHtmlTags(html: string, options?: { preserveWhitespace: boolean }): string {
  if (!html) {
    return html;
  }

  let startWhitespace = '';
  let endWhitespace = '';

  if (options?.preserveWhitespace) {
    const startWhitespaceResult = /^\s/.exec(html);
    const endWhitespaceResult = /\s$/.exec(html);
    startWhitespace = startWhitespaceResult ? startWhitespaceResult[0] : '';
    endWhitespace = endWhitespaceResult ? endWhitespaceResult[0] : '';
  }

  const doc = new DOMParser().parseFromString(html, 'text/html');
  return `${startWhitespace}${doc.body.textContent}${endWhitespace}` || '';
} 

Replace all occurences of given string

export function replaceAll(str: string, find: string, replace: string) {
  return str.replace(new RegExp(find, 'g'), replace);
} 

Is empty object

export function isEmptyObject(obj: Object): boolean {
  return !obj || (Object.keys(obj).length === 0 && obj.constructor === Object);
}

Is same day

 export const isSameDay = (dateA: Date, dateB: Date): boolean => {
  const dayA = new Date(dateA.getFullYear(), dateA.getMonth(), dateA.getDate());
  const dayB = new Date(dateB.getFullYear(), dateB.getMonth(), dateB.getDate());
  return dayA.getTime() === dayB.getTime();
};