您好,希望您一切都好,我希望使用带有Angular外键表的HATEOAS Api。
我在MySql数据库中有3个表:
==>商标:ID,名称,徽标。
==> TypeGamme:ID,名称,描述。
==> Gammes:id,libelleGamme,descriptionGamme,marque,typeGamme。
?顺便说一句:“ Gammes”在法语中意为“范围”,“ Marque”是“品牌”。
返回“ Gammes”表(http://localhost:9031/gammes)的HATEOAS JSON是:
{
"_embedded" : {
"gammes" : [ {
"id" : 1,
"libelleGamme" : "E250",
"descriptionGamme" : "E250 mercedes....",
"_links" : {
"self" : {
"href" : "http://localhost:9031/gammes/1"
},
"gamme" : {
"href" : "http://localhost:9031/gammes/1"
},
"marque" : {
"href" : "http://localhost:9031/gammes/1/marque"
},
"typeGamme" : {
"href" : "http://localhost:9031/gammes/1/typeGamme"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9031/gammes{?page,size,sort}",
"templated" : true
},
"profile" : {
"href" : "http://localhost:9031/profile/gammes"
},
"search" : {
"href" : "http://localhost:9031/gammes/search"
}
},
"page" : {
"size" : 20,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
我能够在数据表中显示“ id”,“ libelleGamme”和“ descriptionGamme”,但其余属性却无法显示。所以我创建了一个像这样的解决方案的方法:
// Gammes.service.ts
// this method has a link in parametre and returns the object of the Marque
public getMarque(url): Observable<Brand> {
return this.http.get<Brand>(url);}
// GammesComponent.ts
getRangeBrand(url): Brand {
this.GammeService.getMarque(url).subscribe(
data => { this.brand = data; });
return this.brand;;}
// GammesComponent.html
<ul>
<li *ngFor="let g of gammes">
<a>{{g.id}}</a>
<a>{{g.libelleGamme}}</a>
<a>{{g.descriptionGamme}}</a>
<a>{{getRangeBrand(g._links.marque.href).name}}</a>
<a>{{getRangeBrand(g._links.typeGamme.href).name}}</a>
</li>
</ul>
因此它在后端给了我无限循环调用,希望您有所帮助。谢谢!