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中null与undefined分析
Jul 25 Javascript
使用JavaScript和C#中获得referer
Nov 14 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
Mar 25 Javascript
js自定义瀑布流布局插件
May 16 Javascript
对于Javascript 执行上下文的全面了解
Sep 05 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
Oct 08 Javascript
一个简易时钟效果js实现代码
Mar 25 Javascript
JavaScript多线程运行库Nexus.js详解
Dec 22 Javascript
node.js部署之启动后台运行forever的方法
May 23 Javascript
ES6 Proxy实现Vue的变化检测问题
Jun 11 Javascript
解决layui动态加载复选框无法选中的问题
Sep 20 Javascript
小程序wx.getUserProfile接口的具体使用
Jun 02 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/05/12 PHP
php 数据结构之链表队列
2017/10/17 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
js性能优化技巧
2015/11/29 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
Angular4 反向代理Details实践
2018/05/30 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
Python中常见的异常总结
2018/02/20 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
Django 使用logging打印日志的实例
2018/04/28 Python
用Python实现将一张图片分成9宫格的示例
2019/07/05 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
Html5实现用户注册自动校验功能实例代码
2016/05/24 HTML / CSS
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
员工年终演讲稿
2014/01/03 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
餐饮商业计划书范文
2014/04/29 职场文书
政审证明范文
2015/06/19 职场文书
Python中三种花式打印的示例详解
2022/03/19 Python
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL