You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular自定义Pipe使用时报Cannot convert undefined or null to object错误

报错原因
  • TypeScript 中函数参数的默认值仅在入参为 undefined 时生效,你用到了可选链 companies?.officers,当 companies 为 null/undefined 时,表达式返回 null,会直接传入 Pipe,不会触发你设置的 [] 默认值。
  • Object.values() 方法仅接受对象类型的入参,传入 null/undefined 时就会抛出 Cannot convert undefined or null to object 的错误。
  • 补充:Angular 模板中可选链优先级高于管道符,你写的 companies?.officers | valueArray 执行顺序为 (companies?.officers) | valueArray,确实会把空值传入 Pipe。
解决方案

推荐优先修改 Pipe 的兼容逻辑,无需调整模板代码,适配性更高:

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

@Pipe({
  name: 'valueArray',
})
export class ValueArrayPipe implements PipeTransform {
  transform(objects: any): any {
    // 入参为空时直接返回空数组,兼容null/undefined两种场景
    if (!objects) return [];
    return Object.values(objects);
  }
}

如果你不想修改 Pipe 代码,也可以直接调整模板的传参逻辑,做空值兜底:

<!-- 空值时传入空对象,Object.values({})返回空数组不会报错 -->
<mat-tab *ngFor="let officer of (companies?.officers ?? {}) | valueArray" label="{{officer.name}}">

内容的提问来源于stack exchange,提问作者Agata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:24:02