利用angular4和nodejs-express构建一个简单的网站(十)—好友模块
上一章讲解了用户登录的相关代码。用户登录成功后,就会进入好友模块,在好友模块中会根据不同的用户ID显示相应的好友列表,点击好友列表中的单个好友就会进入编辑单个好友页面,对好友信息进行编辑。点击列表页面的添加按钮,就会添加新的好友。
我们从这一章开始分析这个好友模块。
模块代码分析
模块基本代码如下:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ReactiveFormsModule } from '@angular/forms';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { BirthdaysComponent } from './birthdays/birthdays.component';
import { BirthdayListComponent } from './birthday-list/birthday-list.component';
import { BirthdayRoutingModule } from './birthday-routing.module';
import { BirthdayService } from './birthday.service';
import { BirthdayDetailComponent } from './birthday-detail/birthday-detail.component';
import { AuthGuardService } from '../auth-guard.service';
import { AuthInterceptor } from '../auth-interceptor';
@NgModule({
imports: [
CommonModule,
ReactiveFormsModule,
BirthdayRoutingModule
],
providers:[
BirthdayService,
AuthGuardService,
{
provide: HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
multi:true
}
],
declarations: [BirthdaysComponent, BirthdayListComponent, BirthdayDetailComponent]
})
export class BirthdaysModule { }
在模块代码中除了作为子模块必须的导入的CommonModule模块,还导入了ReactiveFormsModule,BirthdayRoutingModule两个模块,ReactiveFormsModule模块用于编辑用户信息的提交表单,基本用法和用户注册的表单相同,BirthdayRoutingModule模块用于设置路由。
在providers中提供了BirthdayService、AuthGuardService和一个HTTP请求拦截器,分别用于提供数据服务、路由守卫服务和HTTP拦截服务。
在这个模块下共有三个组件:BirthdaysComponent、BirthdayListComponent、BirthdayDetailComponent。
下面开始逐项进行分析。
路由
路由模块BirthdayRoutingModule负责整个Birthdays模块的全部路由。代码如下:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { BirthdaysComponent } from './birthdays/birthdays.component';
import { BirthdayListComponent } from './birthday-list/birthday-list.component';
import { AuthGuardService } from '../auth-guard.service';
import { BirthdayDetailComponent } from './birthday-detail/birthday-detail.component';
const birthRoutes: Routes = [
{
path: 'birthday',
component: BirthdaysComponent,
canActivate: [AuthGuardService],
children: [
{ path: '', component: BirthdayListComponent },
{
path: ':id',
component: BirthdayDetailComponent
},
{
path:'new',
component:BirthdayDetailComponent
}
]
},
];
@NgModule({
imports: [RouterModule.forChild(birthRoutes)],
exports: [RouterModule]
})
export class BirthdayRoutingModule {}
当地址导航到localhost:4200/birthday时,首先加载BirthdaysComponent控件,BirthdaysComponent控件只要提供一个路由插座和用户的注销操作。
BirthdaysComponent代码比较简单:在这里直接给出html代码和类代码
html代码:
<button type="button" class="btn btn-secondary logout" (click)="logout()">
Logout</button>
<router-outlet></router-outlet>
控件类代码:
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { JumbotronServive, Jumbotron } from '../../jumbotron.service';
import { AuthTokenService } from '../../authtoken.service';
@Component({
selector: 'app-birthdays',
templateUrl: './birthdays.component.html',
styleUrls: ['./birthdays.component.css']
})
export class BirthdaysComponent{
constructor(
private jumbServ: JumbotronServive,
private tokenServ: AuthTokenService,
private router: Router) {
jumbServ.setJumbotron(new Jumbotron('Friends', '', ''));
}
logout() {
this.tokenServ.setToken(null);
this.router.navigate(['/']);
}
}
当点击Logout按钮时,执行logout()函数,清空保存在本地的认证信息,并导航到首页。
...
<继续路由分析>
birthday路径下有三个子路由,分别为:"空",对应BirthdayListComponent组件。":id"和"new",对应同一个BirthdayDetailComponent组件,当导航到"new"路径时,[routerLink]="[0]",":id"的routerLink为具体的id。
这一篇先暂时写这么多,下一篇主要介绍三个主要的服务提供程序。敬请期待......
利用angular4和nodejs-express构建一个简单的网站(十)—好友模块的更多相关文章
- 利用angular4和nodejs-express构建一个简单的网站(五)—用户的注册和登录-HttpClient
上一节简单介绍了一下利用angular构建的主路由模块,根据上一节的介绍,主页面加载时直接跳转到用户管理界面,下面就来介绍一下用户管理模块.启动应用后,初始界面应该是这样的: 用户管理模块(users ...
- 利用angular4和nodejs-express构建一个简单的网站(一)——构建前后端开发环境
学习了一段时间的angular4知识,结合以前自学的nodejs-express后端框架知识,做了一个利用angular4作为前端,node-express作为后端服务器的网站.这个网站的功能很简单, ...
- 利用angular4和nodejs-express构建一个简单的网站(七)—用户注册之ReactiveForm
这一节对用户注册组件进行分析.用户注册组件主要涉及angular4表单的操作.Angular提供了两种构建表单的技术:响应式表单和模板驱动表单. 这两项技术都属于@angular/forms库,并且共 ...
- nodejs+express创建一个简单的服务器
//首先安装express //1.引入express const express = require('express'); //2.创建服务器对象 let server = express(); ...
- 利用HTML5与jQuery技术创建一个简单的自动表单完成
来源:GBin1.com 在线演示 在线下载 谷歌快速搜索自带大量自动完成插件——库中甚至还有一个附带的jQuery UI共享选项.然而今天我要寻找一个替代的解决方案.由DevBridge开发的j ...
- 构建一个简单的基于MVC模式的JavaWeb
零晨三点半了,刚刚几个兄弟一起出去吼歌,才回来,这应该是我大学第二次去K歌,第一次是大一吧,之后每次兄弟喊我,我都不想去,因为我还是很害怕去KTV,或许是因为那里是我伤心的地方,也或许是因为我在那里失 ...
- 通过python 构建一个简单的聊天服务器
构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使 ...
- struts1:(Struts重构)构建一个简单的基于MVC模式的JavaWeb
在构建一个简单的基于MVC模式的JavaWeb 中,我们使用了JSP+Servlet+JavaBean构建了一个基于MVC模式的简单登录系统,但在其小结中已经指出,这种模式下的Controller 和 ...
- 【Android Developers Training】 3. 构建一个简单UI
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
随机推荐
- jdbc 对sqlite的基本操作
1.向数据库中创建表 public void addTable( String dbpath) { //创建表单的sql语句 String createtablesql= " CREATE ...
- Go(03) slice切片的使用
原文链接 http://www.limerence2017.com/2019/05/08/golang05/#more golang 的引用类型和内置类型变量 golang 中变量类型分为引用类型和值 ...
- 【Ruby on Rails 学习三】Ruby 基本数据类型(类、类的实例、对象)
数字.文本.范围.符合.True.False.Nil 1为什么是一个类的对象,使用methods方法可以查看一个对象的所有函数(方法) $ irb irb(main)::> => irb( ...
- finreport 截图时间的函数
- Studio 3T 破解教程
亲测可用 ,且小编一直在使用 1.创建文件studio3t.bat 并将下面这段内容复制 @echo off ECHO 重置Studio 3T的使用日期...... FOR /f "toke ...
- python 并发编程 基于gevent模块 协程池 实现并发的套接字通信
基于协程池 实现并发的套接字通信 客户端: from socket import * client = socket(AF_INET, SOCK_STREAM) client.connect(('12 ...
- Yarn-本地获取任务日志
Yarn-本地获取任务日志 yarn logs -applicationId application_1517538889175_2550 > logs.txt
- Spring MVC 中使用AOP 进行事务管理--注解实现
注解实现实现事务管理很简单,和配置式差不多,配置文件的头文件也要加相应的支持.配置数据源,并开启事务管理支持即可. <bean id="transactionManager" ...
- Windown Server 2008配置tomcat9虚拟路径
一.用途 用于保存项目运产生的文件 二.步骤 1.修改conf\下的web.xml <!-- 找到listings将false改为true --> <init-para ...
- 关于 Spring AOP (AspectJ) 你该知晓的一切 (转)
出处:关于 Spring AOP (AspectJ) 你该知晓的一切