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

Angular单选按钮选中JSON项如何在子组件展示指定属性而非完整对象?

实现方案

第一步:优化父组件单选按钮值绑定(推荐,更符合Angular开发规范)

你当前通过json管道把数组项转成了字符串存在单选按钮的value中,因此拿到的post是JSON字符串而非可直接读取属性的对象,建议直接绑定原始对象:
修改product.component.html里的单选按钮代码,把value="{{data | json}}"替换为[value]="data":

<input type="radio"
  name="posts"
  [value]="data"
  (change)="radioHandle($event)">

此时radioHandle方法中拿到的event.target.value就是完整的JSON对象,无需额外格式转换。

第二步:子组件渲染指定属性

在productDisplay.component.html中直接通过点语法读取对象的指定属性即可,建议加可选链?.避免初始无值时抛出报错:
比如需要展示id、产品名称、产品描述三个属性,代码示例如下:

<div class="product-card">
  <h2>产品ID:{{parentData?.id}}</h2>
  <p class="product-name">产品名称:{{parentData?.name}}</p>
  <div class="product-desc">产品描述:{{parentData?.description}}</div>
</div>

你可以根据实际的JSON字段名,替换上述代码中的name、description等属性名即可。


兼容方案(无需修改父组件现有逻辑)

如果你不想改动父组件的现有代码,也可以在子组件中先把接收到的JSON字符串转成对象再读取属性:
修改productDisplay.component.ts代码:

@Input() public parentData: any;
// 声明解析后的产品对象
public productItem: any;

// 监听输入值变化,自动解析JSON字符串
ngOnChanges() {
  if(this.parentData) {
    this.productItem = JSON.parse(this.parentData);
  }
}

之后在子组件模板中用{{productItem?.属性名}}的格式渲染即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:36:03