[Angular实战网易云]——7、入驻歌手

2024-02-16 13:08

本文主要是介绍[Angular实战网易云]——7、入驻歌手,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

入驻歌手

这节的效果是完成上页遗留的右侧歌手专辑名单的列表。
在服务里找到相关的API,这里有一点小问题,可能是API的版本更新问题,视频里老师的api 参数在新的里边并没有生效,所以就改了一点参数。


home.component.html

<!--右侧开始--><div class="right"><app-member-card></app-member-card><div class="settled-singer"><div class="tit"><b>入驻歌手</b></div><div class="list"><div class="card" *ngFor="let singer of singers"><div class="pic"><img [src]="singer.picUrl" [alt]="singer.name" /></div><div class="txt"><b class="ellipsis">{{ singer.name }}</b><span>专辑:{{ singer.albumSize }}</span></div></div></div></div></div>
<!--右侧结束-->

singer.service.ts

  • 在service里新建singer服务
// 定义传参类型。这里是用的新版的api,里边并没有找到cat的参数,而使用的area,并且取回的数据也并没有分页,可能是传的参数有问题,挖个坑
type SingerParams = {type?: number;area: number;
};
// 声明参数默认值
const defaultParams: SingerParams = {type: 1,area: 7,
};// 获取入驻歌手列表getEnterSingers(args: SingerParams = defaultParams): Observable<Singer[]> {const params = new HttpParams({ fromString: JSON.stringify(args) });console.log("params", params);return this.http.get(this.uri + "artist/list", { params }).pipe(map((res: { artists: Singer[] }) => res.artists));}

member-card.component.html

由于右侧上方是一个快捷登录的卡片,所以会有状态的更新及数据的渲染,为了方便维护就新建一个组件member-card。

<div class="member"><div class="login"><p>登录网易云音乐,可以享受无限收藏的乐趣,并且无限同步到手机</p><button nz-button class="btn">用户登录</button></div>
</div>

member-card.component.less

@import "../../../../../assets/styles/varibles";.member {.login {height: 126px;background: url("../../../../../assets/images/index.png") no-repeat;p {width: 205px;margin: 0 auto;padding: 16px 0;line-height: 22px;font-size: @font-size-sm;}.btn {display: block;color: @white-color;width: 100px;height: 30px;margin: 0 auto;background: url("../../../../../assets/images/index.png") no-repeat 0 -195px;text-shadow: 0 1px 0 @wy-btn-red;border-color: @error-color;}}.n-myinfo {height: 184px;padding-top: 20px;background: url("../../../../../assets/images/index.png") no-repeat 0 -270px;.f-cb {.head {position: relative;float: left;display: block;width: 80px;height: 80px;margin-left: 20px;padding: 2px;background: @white-color;border: 1px solid #dadada;}.info {float: left;width: 115px;margin-left: 12px;.lv {margin: 5px 0 10px 0;.u-icn2 {display: inline-block;overflow: hidden;vertical-align: middle;background: url("../../../../../assets/images/icon2.png") no-repeat0 9999px;}.u-lv {height: 17px;padding-left: 25px;line-height: 18px;color: #999;font-weight: bold;font-style: italic;background-position: -130px -64px;.lvright {float: right;width: 8px;height: 17px;background-position: -192px -64px;}}}}}.dny {margin: 12px 0 0 20px;color: #666;li {float: left;height: 40px;padding: 0 18px;border-right: 1px solid #e4e4e4;&.fst {padding-left: 0;}&.lst {padding-right: 0;border-right: none;}strong {display: block;max-width: 40px;font-size: 20px;font-weight: normal;}span {margin-left: 2px;}}}}
}

效果

总结

在调用api的时候,事先定义好来回的数据类型,可以起到优化的效果,减少内部判断类型。对于有状态更新的dom,要考虑是否要方便维护,从而决定是否单独提取出新的组件页。

这篇关于[Angular实战网易云]——7、入驻歌手的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/714615

相关文章

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行