Не удается преобразовать неопределенный или нулевой текст в объектный типскрипт

#javascript #angular #typescript

Вопрос:

Я написал канал, но когда я использую канал, он выдает ошибку

HTML

 <mat-tab *ngFor="let officer of companies?.officers | valueArray" label="{{officer.name}}">
 

тс

     import {Pipe, PipeTransform} from '@angular/core';

@Pipe({
  name: 'valueArray',
})
export class ValueArrayPipe implements PipeTransform {
  transform(objects: any = []): any {
    return Object?.values(objects);
  }
}
 

Комментарии:

1. И в чем же ошибка? Не храни секретов ;D

2. Невозможно преобразовать неопределенное или нулевое значение в объект )))

Ответ №1:

Используйте оператор null-coalescing ( ?? ), чтобы использовать значение по умолчанию, если это null или undefined .

Установка значения по умолчанию для аргумента функции работает только тогда, когда для этого аргумента в функцию ничего не передается, поэтому должно быть, поэтому ваше [] значение по умолчанию не работает.

 ...
  transform(objects: any = []): any {
    return Object.values(objects ?? {});
...
 

Ответ №2:

Попробуйте учесть тот факт, что входным параметром для метода преобразования также может быть null или undefined :

 @Pipe({
  name: 'valueArray',
})
export class ValueArrayPipe implements PipeTransform {
  transform(objects: any = []): any {
    if (!objects) {
      return null; // or [], or undefined
    }
    return Object.values(objects);
  }
}