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

Angular中如何将@Input接收的父组件数据正确渲染到HTML模板

问题修复方案

出现报错的核心原因是:你在@Input中定义的setter仅接收了入参,没有将入参赋值给子组件类的实例属性,模板中绑定的user指向的是类的成员属性而非setter的入参,因此始终为undefined。

你可以选择以下任意一种方案修复:

  • 方案1:保留setter逻辑,补充配套的属性存储与getter
    如果你需要在赋值user时做额外的拦截处理,可按如下代码修改:
    // user-profile.ts
    // 定义内部变量存储user实际值
    private _user: any = {};
    
    @Input('user')
    set user(user: any) {
      this._user = user;
      // 你原有需要在赋值时执行的逻辑可以写在这里
    }
    // 对外暴露getter,供模板访问user值
    get user(): any {
      return this._user;
    }
    
  • 方案2:无需拦截赋值逻辑时直接简化为普通@Input
    如果你不需要在user赋值时执行额外逻辑,直接删除setter写法即可:
    @Input() user: any = {};
    

额外优化建议

你也可以在模板中使用可选链语法,进一步避免属性未定义的报错:

<h1>
  {{ user?.name }}
</h1>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:24:03