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 相关文章推荐
jQuery实现原理的模拟代码 -6 代码下载
Aug 16 Javascript
自己写了一个展开和收起的多更能型的js效果
Mar 05 Javascript
js绑定事件this指向发生改变的问题解决方法
Apr 23 Javascript
Javascript表格翻页效果实现思路及代码
Aug 23 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
Mar 10 Javascript
javascript搜索框点击文字消失失焦时文本出现
Sep 18 Javascript
JavaScript中的getMilliseconds()方法使用详解
Jun 10 Javascript
javascript连续赋值问题
Jul 08 Javascript
JavaScript门道之标准库
May 26 Javascript
layer弹出层全屏及关闭方法
Aug 17 Javascript
Node.js 深度调试方法解析
Jul 28 Javascript
利用promise及参数解构封装ajax请求的方法
Mar 24 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技术开发客服工单系统
2016/01/06 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
jquery text,radio,checkbox,select操作实现代码
2009/07/09 Javascript
JavaScript 继承详解(三)
2009/07/13 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
javascript时间函数大全
2014/06/30 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
python之Socket网络编程详解
2016/09/29 Python
python机器学习实战之K均值聚类
2017/12/20 Python
Python对象与引用的介绍
2019/01/24 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
IBatis持久层技术
2016/07/18 面试题
应届生会计电算化求职信
2013/10/03 职场文书
中学教师自我鉴定
2014/02/07 职场文书
个人公开承诺书
2014/03/28 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
工程索赔意向书
2014/08/30 职场文书
中标通知书范本
2015/04/17 职场文书
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android