收到了来自api的信息,{{value_expression}}

问题描述

您好,谢谢您,

我对{{value_expression}}有疑问。我将运行一个使用Drupal 9中的REST api的小型应用程序。我的列表组件可以正常工作,但是当我单击我的详细信息页面时我不会收到任何信息,但是当我使用{{object | json}}时,它将输出整个(与硬币网址有关,请参见示例)api,因此它正在接收其数据。

我使用的是

  • 角度10
  • Drupal 9

示例json管道{{ico | json}}

[ { "title": "Coin","body": "<p>This is just the description about the Coin project</p>\r\n","field_coin_uri": "name-of-coin","field_coin_symbol": "SYMB" } ]

Data.service.ts:

getIcoDetail(field_coin_uri: string) : Observable<Icos> {
    const url = `${this.ApiUrl}/coins/${field_coin_uri}`;
    
    return this.http.get<Icos>(url);
  }

detail.component.ts:

export class IcoDetailComponent implements OnInit {

  ico: Icos;
  
  constructor(
    private route: ActivatedRoute,private dataService: dataService
  ) { }

  ngOnInit() {

    const field_coin_uri = this.route.snapshot.paramMap.get('field_coin_uri');
    console.log(field_coin_uri);

    this.dataService.getIcoDetail(field_coin_uri).subscribe( ico => this.ico = ico );
  }

}

detail.component.html

<div *ngIf="ico">
    {{ ico|json }}
    <h3>{{ ico.title }}</h3>
    <p>{{ ico.body }}</p>
</div>

如果需要任何信息来回答我的问题,请告诉我,我会为您提供。

解决方法

您从API接收的信息是一个数组。您需要使用索引值访问它,并检查以下各项是否可行。

this.dataService.getIcoDetail(field_coin_uri).subscribe( ico => this.ico = ico[0] );