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之对系统的toFixed()方法的修正
May 08 Javascript
JavaScript学习笔记记录我的旅程
May 23 Javascript
jquery 淡入淡出效果的简单实现
Feb 07 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
May 11 Javascript
js怎么判断flash swf文件是否加载完毕
Aug 14 Javascript
原生JS实现响应式瀑布流布局
Apr 02 Javascript
JavaScript 事件绑定及深入
Apr 13 Javascript
javascript:void(0)点击登录没反应怎么解决
Nov 13 Javascript
Vue数据驱动模拟实现4
Jan 12 Javascript
微信小程序 页面跳转及数据传递详解
Mar 14 Javascript
值得收藏的八个常用的js正则表达式
Oct 19 Javascript
解决antd的Form组件setFieldsValue的警告问题
Oct 29 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
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
python定时截屏实现
2020/11/02 Python
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
法学研究生自我鉴定范文
2013/12/04 职场文书
优秀毕业生推荐信范文
2014/03/07 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
领导干部廉政承诺书
2014/03/27 职场文书
IT工程师岗位职责
2014/07/04 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
vue项目支付功能代码详解
2022/02/18 Vue.js
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js