首页 > 解决方案 > 收到来自 api 的信息,{{value_expression}} 的页面上没有结果

问题描述

嗨,谢谢你,

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

我用什么:

示例 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" } ]

数据服务.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>

如果有任何信息需要回答我的问题,请告诉我,我会提供给你。

标签: angulartypescriptapidrupal

解决方案


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

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

推荐阅读