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 相关文章推荐
用于判断用户注册时,密码强度的JS代码
Jan 01 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
Aug 28 Javascript
AngularJS入门教程之Hello World!
Dec 06 Javascript
jQuery Dialog对话框事件用法实例分析
May 10 Javascript
使用jquery给新生的th绑定hover事件的实例
Feb 10 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
May 24 Javascript
js移动端图片压缩上传功能
Aug 18 Javascript
canvas轨迹回放功能实现
Dec 20 Javascript
尝试自己动手用react来写一个分页组件(小结)
Feb 09 Javascript
layui点击按钮添加可编辑的一行方法
Aug 15 Javascript
微信小程序实现折线图的示例代码
Jun 07 Javascript
JQuery复选框全选效果如何实现
May 08 jQuery
基于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
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
自定义jQuery选项卡插件实例
2013/03/27 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
Angular.js中上传指令ng-upload的基本使用教程
2017/07/30 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
Python Selenium库的基本使用教程
2021/01/04 Python
Python与C/C++的相互调用案例
2021/03/04 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
优秀乡村医生事迹材料
2014/05/28 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
工程部文员岗位职责
2015/02/04 职场文书
2016新年感言
2015/08/03 职场文书