#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);
}
}