位置: 编程技术 - 正文

Angular实现类似博客评论的递归显示及获取回复评论的数据(angular做app)

编辑:rootadmin

推荐整理分享Angular实现类似博客评论的递归显示及获取回复评论的数据(angular做app),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:angular实战项目,angular实战,angular implements,angular实现原理,angular ngchange,angular实现原理,angular ngchange,angular实现原理,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

我们在一些技术博客中会经常看到很多递归评论,也即是我们可以回复博友的评论,且界面很美观,有梯度的显示格式,日前在空余时间写类似的 demo,所以记录下来,可以给需要的人一些借鉴的作用。好了,废话少说,直奔主题。。。

思路

我们在写后台程序的时候,经常会遇到生成类似树的这种数据结构,我们直觉就是使用递归的方法来实现,起初我也是这么想的,就是写一个 Angular4 的递归方法,组成一个字符串,然后在界面显示,类似下面代码

很天真的以为可以了,结果一试,标签不会被解析,才想起已经过了解析标签的过程了。。。

后来想着,现在的前端框架都是以组件化自称, Angular4 也不例外,那么一个 Component 可以嵌入任何 Component,那肯定可以嵌入自己,也就有了类似递归的概念了,想到这立马试试。。。

具体实现

思路是这样子,我定义了数据的格式,是每个评论下面有一个子评论数组,而不是每个评论有一个父评论,数据格式如下:

CommentComponent 组件实现了评论模块,但是递归评论并不在这个组件实现,而是在子组件 CommentViewComponent 实现,因为 CommentComponent 还包括一个一个输入评论的文本框。

评论总模块 ComponentComponent 代码:

comment.component.ts

comment.component.html

comment.component.css

子模块 ComponentViewComponent 代码:

component-view.component.ts

component-view.component.html

comonent-view.component.css

结果

这时的展示结果如下图所示:

上面只是说明了如何实现评论梯形显示,在博客评论中我们经常看到可以回复某一条评论,本文讲述如何实现点击某一条评论的回复按钮后,获取该条评论的内容并显示在输入框中。类似 CSDN 博客评论一样,点击回复后输入框自动添加了 [reply]u[/reply]

思路

Angular实现类似博客评论的递归显示及获取回复评论的数据(angular做app)

依据上一篇文章中的评论梯形显示,我们还需要实现点击回复后,屏幕自动到达输入框位置,并且获取了点击回复的评论的信息。首先分解一下这个功能点,在项目中我们也会经常分解功能点,这个功能点有 2 个小点:一是在每条评论中加上 [回复] 按钮,点击回复后跳到输入框位置;二是点击回复后,获取到点击回复的那条评论的信息。下面我们一一解决。

跳转到输入框

我们接触前段第一个语言便是 HTML,我们知道 HTML 中有一个 # 定位,下面代码简单解释一下。

假设这个 HTML 代码文件是 index.html

上面代码只要点击 Click me to pointer 这个链接,页面就会跳到 id=”pointer” 这个 div 的位置。所以我们在实现这个点击回复跳转到输入框中就可以使用这个方法。

我们在 comment-component.html 中将评论输入框加入 id=”comment”,接下来就是路径拼接的问题了,我们可以通过 Angular 的 Router 的 url 来获取本页面的路径,然后在这个路径后面加入 #comment 就可以实现跳转了,下面是实现这个跳转功能的代码

添加 id=”comment”

comment-component.html

添加通过路由获取当前页面 URL

comment-view.component.ts

添加链接 href=”“

comment-view.component.html

这就实现了页面跳转的功能点,接下来实现获取回复的评论的信息。

获取回复的评论信息

有人会说获取回复的评论信息,这不简单么?加个 click 事件不就行了。还记得上一篇文章咱们是如何实现梯形展示评论的么?咱们是通过递归来实现的,怎么添加 click 事件让一个不知道嵌了多少层的组件能够把评论信息传给父组件?首先不具体想怎么实现,我们这个思路是不是对的:把子组件的信息传给父组件?答案是肯定的,我们就是要把不管嵌了多少层的子组件的信息传给 comment.component.ts 这个评论模块的主组件。Angular 提供了 @Output 来实现子组件向父组件传递信息,我们在 comment-view.component.ts 模块中添加 @Output 向每个调用它的父组件传信息,我们是嵌套的,这样一层一层传出来,直到传给 comment-component.ts 组件。我们看代码怎么实现。

实现代码

comment-view.component.ts

comment-view.component.html

comment.component.ts

comment.component.html

解释一下代码逻辑:

我们在 comment-view.component.ts 添加以下几点:

定义了@Output() contentEvent 添加了reply(comment: Comment) 事件在点击回复的时候触发的,触发的时候 contentEvent 将 comment 传到父模块 添加 transferToParent(event) 是接受子组件传来的 event, 并且继续将 event 传到父组件

在 comment.component.ts 中定义了 getReplyComment(event) 方法,该方法接收子组件传递来的评论信息,并将信息显示在页面上。大功告成。。。

效果图

总结

标签: angular做app

本文链接地址:https://www.jiuchutong.com/biancheng/375876.html 转载请保留说明!

上一篇:vue自定义过滤器创建和使用方法详解(vue自定义过滤器的语法)

下一篇:vue使用mint-ui实现下拉刷新和无限滚动的示例代码(vue miniui)

  • 预收货款需要缴纳消费税吗?缴纳消费税的时间应该是?
  • 项目异地预缴附加税会计分录是?
  • 个人所得税怎么扣除标准
  • 增值税专用发票抵扣期限
  • 老板自己出钱买股票
  • 材料入库的会计分录材料采购损失
  • 递延收益的核算
  • 小微企业零申报多久报一次税
  • 员工住院的发票可以做账吗
  • 分公司注销后账户不注销可以吗
  • 利润表中的本期金额栏内各项数字一般根据什么填列
  • 音乐茶座取什么名字好呢
  • 合伙企业发生亏损的原因
  • 房产过户需要交个人所得税吗
  • 原材料暂估少了如何调整
  • 销售亏损原因分析范文
  • 小规模纳税人转成一般纳税人条件
  • 生产企业上税如何计算?
  • 一般纳税人可以开3%的发票吗
  • 附加税税种认定不完整是什么意思
  • 生产企业销售原材料所取得的收入属于( )
  • 影视行业如何盈利
  • 购进增值税专用发票怎么填开
  • 固定资产折旧提足怎么办
  • 公司为员工承担房租
  • 如何代开外籍人员个人所得税完税凭证?
  • 企业购车按揭产生的费用
  • 京东白条账单制和订单制是什么样的
  • 小商业企业应交所得税
  • 建筑工程购买的家用清洁电器能勾选认证吗
  • 房地产开发有限公司英文
  • 公务车加油入什么科目
  • 桌面图标间距特别大
  • 销售收入的暂估入账
  • 企业的借款利息支出全部可以税前扣除吗
  • 确定注册资本的方法
  • 一次摊销法优缺点
  • 应交增值税减免税款包括什么
  • 短期投资计入什么科目
  • 贝纳克波斯图干红葡萄酒
  • win11大小核调度会优化吗
  • 哪些费用发票可以抵扣企业所得税
  • js 数组remove
  • java阻塞队列线程安全吗
  • 冲红怎么做会计科目
  • 出口退税抵减应纳税额
  • 企业会计准则是属于什么
  • 培训费其他费用的列支范围
  • 增值税专用发票查询系统官方网站
  • 其他应收款科目核算哪些业务
  • 单位未足额缴纳社保怎么赔偿
  • 开户套餐费是什么意思
  • 没收到发票也可以入账吗
  • 以前的房产证现在能过户吗
  • 行政单位的财务报表包括哪些
  • 处置长投其他权益变动要转损益吗
  • 累计折旧的计提会计分录
  • 职工薪酬怎么核算
  • 货拉拉平台收取费用
  • 销售自产农产品怎么核算成本
  • 物流公司会计工作内容
  • xp系统安装软件重复
  • win10字体边缘模糊
  • win8账户
  • mac新版系统
  • win10关闭defender方法
  • linux管理员权限命令
  • win8.1核心版密钥
  • 系统升级后c盘空间小了
  • xcode的bundle identifier修改
  • 一键修复ie
  • python内置函数什么用来返回序列中的最大元素
  • 简易最新版本
  • js函数详解
  • js的判断类型
  • 电子发票查询官网入口
  • 花都狮岭到广州白云站怎么坐车
  • 请领导批示的格式
  • 上海房屋出租交税
  • 中介服务行业
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设