Angular7创建项目、组件、服务以及服务的使用


Posted in Javascript onFebruary 19, 2019

三大前端项目就剩angular没学了,在网上找了几个教程,这里总结一下,方便以后用到时查阅

创建项目

首先安装cli工具

npm install -g @angular/cli

创建一个空项目, 有两处要选择的,一个是路由,我这里是要路由的,还有一个开发css的语言,我这里选择scss,就不截图了,选完后会自动通过yarn安装依赖,稍等一会就好了

ng new pybbs-front-angular

创建好了,运行 npm run start 或者 ng serve 启动服务,然后就可以在浏览器里打开 http://localhost:4200/ 地址查看启动后的首页了

创建组件

命令 ng g component user 执行完后,会在 src/app 目录下生成一个user的文件夹,里面有四个文件

如果想把组件都放在一个文件夹里管理,也可以在创建的时候加上一个文件夹名字,比如把所有的组件都放在 components 文件夹里,命令就是这样的 ng g component components/user

页面名 说明
user.component.html 组件模板文件
user.component.scss 组件的样式文件
user.component.spec.ts 组件测试文件
user.component.ts 组件文件

使用命令创建组件有个好处就是cli会自动把这个组件引入到 src/app/app.module.ts 文件里,这样直接在其它文件里使用 src/app/user/user.component.ts里定义的selector,一般这个名字都是 app-xxx 后面xxx就是这个模块的名字,比如这里的user模块,就是 app-user

生命周期

angular的生命周期有很多,看下下图

这里只介绍二个

方法 说明
ngOnInit 组件加载时初始化变量或者网络请求时代码写在这里面
ngAfterViewInit 如果想对页面进行dom操作,最好在这个方法里操作,这个方法是在页面dom元素都加载完成后才调用的

创建服务

命令 ng g service user 执行完后,cli会自动创建两个文件在 src/app/user 文件夹里

如果想把服务也都放在一个文件夹里管理,可以在命令上加上一个服务的文件夹名字,如 ng g service services/user

服务文件名 说明
user.service.ts 组件提供服务的主文件
user.service.spec.ts 组件提供服务文件的测试文件,写对服务测试的代码都放在这里面

服务创建好了之后,没有创建组件那么方便了,还需要自己配置一下,打开 src/app/app.component.ts 文件

在文件内引入,然后将服务注入到 providers 里

import { UserService } from './user/user.service';

@NgModule({
 providers: [
  UserService
 ]
})

首先添加一个服务 user.service.ts

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({
 providedIn: 'root'
})
export class TopicService {

 constructor(private http: HttpClient) { }

 fetchGithubApi() {
  return new Observable((observe) => {
   const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };
   this.http.get('https://api.github.com', httpOptions)
    .subscribe((data: any) => {
     observe.next(data.detail);
     // 如果有错误,通过 error() 方法将错误返回
     // observe.error(data.description);
    });
  });
 }
}

打开 user.component.ts 文件,使用这个服务里定义的方法,代码如下

引入服务文件,然后初始化,这里初始化有两种方式,一种 private userService: UserService = new UserService(),另一种是通过构造方法注入

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { UserService } from './user.service';

@Component({
 selector: 'app-user',
 templateUrl: './user.component.html',
 styleUrls: ['./user.component.scss']
})
export class UserComponent implements OnInit {

 constructor(
  private userService: UserService
 ) { }

 ngOnInit() {
  this.userService.fetchGithubApi()
   .subscribe(data => console.log(data), error => console.log(error));
 }

}

说明:上面例子中请求接口用的是 angular 内置好的 rxjs 模块,你也可以换成流行的 axios 或者其它的框架

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
Jan 22 Javascript
jQuery数组处理代码详解(含实例演示)
Feb 03 Javascript
JS获取iframe中longdesc属性的方法
Apr 01 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
Apr 19 Javascript
JavaScript中用let语句声明作用域的用法讲解
May 20 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
May 28 Javascript
微信小程序 教程之小程序配置
Oct 17 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
Feb 07 Javascript
jquery获取下拉框中的循环值
Feb 08 Javascript
Vue开发中整合axios的文件整理
Apr 29 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
Oct 14 Javascript
Vue学习笔记之计算属性与侦听器用法
Dec 07 Javascript
小程序转发探索示例
Feb 19 #Javascript
JS异步执行结果获取的3种解决方式
Feb 19 #Javascript
jQuery AJAX与jQuery事件的分析讲解
Feb 18 #jQuery
基于node.js实现爬虫的讲解
Feb 18 #Javascript
简单实现vue中的依赖收集与响应的方法
Feb 18 #Javascript
vue实现的网易云音乐在线播放和下载功能案例
Feb 18 #Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
Feb 18 #Javascript
You might like
PHP实现用户认证及管理完全源码
2007/03/11 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
动态控制Table的js代码
2007/03/07 Javascript
JS event使用方法详解
2008/04/28 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
Python中交换两个元素的实现方法
2018/06/29 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
大学生学习生活的自我评价
2013/11/01 职场文书
大学生简历的个人自我评价
2013/12/04 职场文书
活动总结格式范文
2014/04/26 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
扬州个园导游词
2015/02/06 职场文书
试用期辞职信范文
2015/03/02 职场文书
小组组名及励志口号
2015/12/24 职场文书