我想模拟一个微博客应用程序来学习Angular 2。
我正在使用以下json占位符链接:
如您所见,post api有userId
,(而不是username
)。如果我必须在列出所有帖子时显示用户名,我是否需要另一个同时包含帖子和用户名的API,或者是否可以使用对上述API的两个不同调用来完成?
这是我列出帖子的方式: -
<li *ngFor="let post of posts">
<div>{{post.userId}}</div>
<div>{{post.id}}</div>
<div>{{post.title}}</div>
<div>{{post.body}}</div>
</li>
正如你所看到的,这里基于api调用,我得到了userId ......而不是我希望它显示用户的名字
答案 0 :(得分:1)
以角度方式执行此操作的方法是使用服务。您不直接从组件中调用API。您需要创建一个“服务”来处理API,然后在您的组件中注入您的服务并在那里使用它们。
在您的特定场景中,您将拥有两项服务,即“UserService”和“PostService”。每个服务都有一个适当的“get”方法,可以调用API。然后在您的组件中,您将注入这两个服务并分别调用它们各自的方法。
关于您对该问题的具体更新,假设您在从API收到结果后有一个“posts”数组和一个“users”数组。现在,请注意以下逻辑:
for (let i=0; i<posts.length; i++)
{
posts[i].username = users.filter(u => u.id === posts[i].userId)[0].username
}
我们在这里做的是遍历所有“帖子”并通过交叉引用它们到用户数组为每个“帖子”添加“用户名”属性。只要确保你使用正确的语法和区分大小写,因为我没有测试过这一行,只是将逻辑包含在其中
答案 1 :(得分:0)
这两个选项都是可行的..
注意:如果您使用的是自己的服务器,则可以使用此功能。
注意我使用这种方法可以看到的唯一问题是请求的数量..因为每个用户都会有帖子请求。
最终决定权归你所有。你必须看到优点和缺点..如果服务器代码也是你的,生病建议第一种方法..