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 相关文章推荐
解密效果
Jun 23 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
Jun 21 Javascript
jquery()函数的三种语法介绍
Oct 09 Javascript
node.js中的fs.utimes方法使用说明
Dec 15 Javascript
JavaScript中string转换成number介绍
Dec 31 Javascript
jQuery解析XML文件同时动态增加js文件的方法
Jun 01 Javascript
javascript实现PC网页里的拖拽效果
Mar 14 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
Sep 27 Javascript
Bootstrap3 datetimepicker控件使用实例
Dec 13 Javascript
React 子组件向父组件传值的方法
Jul 24 Javascript
Vue中用props给data赋初始值遇到的问题解决
Nov 27 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 jQuery
小程序转发探索示例
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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
PHP安全编程之加密功能
2006/10/09 PHP
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
yii分页组件用法实例分析
2015/12/28 PHP
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
js 提取某()特殊字符串长度的实例
2017/12/06 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
Python 解析简单的XML数据
2020/07/24 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
24岁生日感言
2014/01/13 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
拓展策划方案
2014/06/03 职场文书
个人投资合作协议书
2014/10/12 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
自主招生自荐信范文
2015/03/04 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
pandas中pd.groupby()的用法详解
2022/06/16 Python