我在spring webflux后端有一个微服务,我正在为同一个服务开发UI。现在我有一个GET请求,它根据提供的memberId返回成员详细信息。如何从后端获取成员详细信息并在前端显示。GET请求如下所示:localhost:8081/viewbill/234。我试着在angular中实现它,但是没有发现任何成功。我不知道如何在Angular UI上显示数据。我还附上了GET端点的 Postman 截图。下面是我的Angular文件结构:x1c 0d1x
app-routing.module.ts
const routes: Routes = [
{path:'get-member', component:MemberListComponent},
{path:'view-member', component:MemberDetailsComponent}
];
member-service.ts
viewMemberDetails(memberId:string):Observable<any>
{
const url="http://localhost:8081/viewbill/"+memberId;
return this.httpclient.get<any>(url);
}
}
member-details.component.ts
export class MemberDetailsComponent implements OnInit {
member:Member=new Member();
memberId:any;
constructor(private memService:MemberService,private route:Router) { }
ngOnInit(): void {
this.memService.viewMemberDetails(this.memberId).subscribe(data=>{
this.member=data;
console.log(data);
});
}
member-details.component.html
<div class="container">
<h2>Member Details</h2>
<table class="table table-striped">
<thead>
<tr>
<th>MemberId</th>
<th>FirstName</th>
<th>LastName</th>
<th>Age</th>
</tr>
<tr *ngFor=let m of member>
<th>{{m.memberId}}</th>
<th>{{m.firstName}}</th>
<th>{{m.lastName}}</th>
<th>{{m.age}}</th>
</tr>
</thead>
</table>
</div>
</body>
</html>
<router-outlet></router-outlet
我尝试使用ngfor显示数据,但收到错误消息类型'Member'无法指派给类型'NgIterable|零值|未定义“。
<tr *ngFor="let m of member">
2条答案
按热度按时间xtfmy6hx1#
假设通过您正在使用的
memberId
,有任何数据要获取(这可能是您获取null
的简单原因,并且您正在使用memberId
,因为在示例中您提供的memberId
从未初始化。首先,正如@Aid Hadzic提到的,
*ngFor
需要一个Intable来迭代它的初始值。你提供的变量member
是Member
类型,它可能是不可迭代的。更接近你想要的。
其次,我强烈建议你尽可能地保持你的应用程序的React性。这意味着你可能想避免手动值处理和更新,并利用最佳实践,如
async
-管道,在这种情况下,它是由Angular本机提供的。这意味着在你的情况下,像下面这样的设置可能值得一看:第一个
3mpgtkmj2#
*ngFor
将不起作用,因为您的变量未定义为NgIterable
(数组等)。我也没有看到你曾经给
memberId
赋值。也许你的请求甚至失败了?但是,如果请求成功,在服务调用的订阅中,将响应结果值赋给
member
就足够了。为了安全起见,在HTML模板中,可以将member?.memberId
、member?.firstName
等赋给member
。