angular6.0使用教程之父组件通过url传递id给子组件的方法


Posted in Javascript onJune 30, 2018

在angular6.0使用教程:angular主从组件章节我们介绍了父组件向子组件传递数据,当时是在同一个页面传递数据的。而本章的angular数据传递将是在不同页面间的传递,即list组件页面向post组件页面传递数据。

第一步:配置post组件的路由:

在上一章angular6.0使用教程:angular6.0的路由使用中我们为angular6.0项目设置了路由,我们只设置了home组件和list组件的路由。我们还要设置post组件的路由,因为post是产品组件,而不同的产品会有不同的id,显示不同的产品内容,所以,我们要为每一个id要设置对应的路由。app-routing.module.ts文件代码如下:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import {HomeComponent} from "./home/home.component"; //引入home组件
import {ListComponent} from "./list/list.component";//引入list组件
import {PostComponent} from "./post/post.component";//引入post组件
const routes: Routes = [
 { path:'home', component:HomeComponent },
 { path:'list', component:ListComponent },
 //post组件路由
 { path:'post/:id', component:PostComponent },
 { path:'**', redirectTo:'/home' }
];
@NgModule({
 imports: [RouterModule.forRoot(routes)],
 exports: [RouterModule]
})
export class AppRoutingModule { }

第二步:修改db.service.ts服务代码:

在angular6.0使用教程:创建和使得angular服务章节中,我们能过angular6.0的服务向远程服务器接口请求数据,并在list组件中接收获取到angular请求到的数据。具体,可参阅这一章节。

本章我们要实现的功能是:点击list组件页面上的一个列表链接,就向post组件页面传递一个产品id,post组件会向db.service.ts服务获取这个产品id对应的产品信息。所以,我们要在db.service.ts服务中再添加一个方法——用来向远程服务器请求这个产品id的信息。代码如下:

getPost(id:number):Observable<any>{
 return this.http.get("/api/dream/index.php/home/index/post_detail/id/"+id);
}

第三步:在post.component.ts组件文件中添加获取数据方法:

1:引入db.service.ts服务:

import {DbService} from "../db.service";

2:引入ActivatedRoute模块【当前被激活的路由,即当前post,可以获取当前post的id】:

import {ActivatedRoute} from "@angular/router";

3:在post组件的构造函数中实例化DbService服务和ActivatedRoute模块对象:

constructor(private db:DbService,private route:ActivatedRoute) { }

4:声明一个接收变量:

post:any;

5:添加获取DbService服务数据的方法:

getPost():void{
 var id = +this.route.snapshot.paramMap.get('id'); //获取当前Post的产品id
 this.db.getPost(id).subscribe( //通过db:DbService的getPost()方法获取数据
 data=>{ this.post = data; //把产品全部的信息赋值给post变量 }
 );
}

6:在初始化ngOnInit中调用这个方法:

ngOnInit() {
 this.getPost(); 
}

7:在post.component.html前台代码中调用数据:

<div class="post_detail" *ngIf="post">
 <h1>{{ post.name }}</h1>
 <h3>{{ post.addtime }}</h3> 
 <ul [innerHTML]="post.content"></ul>
</div>

这时,在前台调用可能会有“调用HTML字符串”出现的问题,这个可以参阅angular6.0使用教程:angular如何调用HTML字符串章节。

这样,我们就实现了angular6.0的子组件通过url获取父组件传递过来的id,再通过服务请求远程数据。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript脚本性能的优化方法
Feb 02 Javascript
JS简单的图片放大缩小的两种方法
Nov 11 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
Mar 03 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
Aug 19 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
Jan 28 Javascript
javascript冒泡排序小结
Apr 10 Javascript
jQuery实现的右下角广告窗体跟随效果示例
Sep 16 Javascript
jQuery实现鼠标滑过图片移动特效
Dec 08 Javascript
vue实现百度搜索下拉提示功能实例
Jun 14 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
Aug 22 Javascript
详解vscode中vue代码颜色插件
Oct 11 Javascript
react 生命周期实例分析
May 18 Javascript
基于webpack4搭建的react项目框架的方法
Jun 30 #Javascript
AngularJs分页插件使用详解
Jun 30 #Javascript
ionic grid(栅格)九宫格制作详解
Jun 30 #Javascript
vue检测对象和数组的变化分析
Jun 30 #Javascript
浅析vue.js数组的变异方法
Jun 30 #Javascript
详解vue添加删除元素的方法
Jun 30 #Javascript
vue.js删除列表中的一行
Jun 30 #Javascript
You might like
如何将数据从文本导入到mysql
2006/10/09 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
js单例模式的两种方案
2013/10/22 Javascript
js分页工具实例
2015/01/28 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
js截取字符串功能的实现方法
2017/09/27 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
2019/08/20 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
python安装oracle扩展及数据库连接方法
2017/02/21 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
python中取绝对值简单方法总结
2020/07/24 Python
python函数超时自动退出的实操方法
2020/12/28 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
python制作微博图片爬取工具
2021/01/16 Python
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
世界气象日活动总结
2015/02/27 职场文书
聚会通知怎么写
2015/04/23 职场文书
工作表现证明
2015/06/15 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android