Angular基础学习笔记
一、Angular介绍
https://angular.cn/docs
Angular是谷歌开发的一款开源的 web 前端框架,诞生于2009年,由 Misko Hevery等
人创建,后为 Google 所收购。是一款优秀的前端JS框架。
Angular 基于 TypeScript 和 react、vue相比,Angular 更适合中大型企业级项目。
二、学习Angular 必备基础
必备基础:html、css、js、es6、Typescript、rxjs
三、Angular 环境搭建
1、安装前准备工作
安装nodejs稳定版本
2、安装angular/cli脚手架
npm install -g @angular/cil
//安装指定版本
npm install -g @angular/cli@7.3.9
3、检查版本号
ng --version 或者ng v
四、Angular 项目创建
1、打开命令行工具找到你要创建项目的目录
2、创建项目
ng new 项目名称
//如果要跳过npm i 安装
ng new 项目名称–skip-install后用cnpm install
3、根模块说明
declarations:[] //配置当前项目运行的组件
imports:[] //配置当前模块运行依赖的其他模块
providers:[] //配置项目所需要的服务
bootstrap:[] //指定应用的主视图(根组件)通过引导根appModule 来启动应用
4、通过cli 创建组件、服务、类等
ng g 可以查看可以创建的类型
//创建组件
ng g c components/news <==> ng generate component components/news
//创建服务
ng g service services/storage
五、开发中常用知识点
1、组件
@Component装饰器会指出紧随其后的那个类是个组件类。
@Component({
selector: ‘app-hero-list’,
templateUrl:’./hero-list.component.html’,
providers:[HeroService]
})
export class HeroListComponent implements OnInit{
/…/
}
2、依赖注入
在Angular 中,要把一个类定义为服务,就要用@Injectable()装饰器来提供元数据,
以便让 Angular 可以把它作为依赖注入到组件中。@Injectable()装饰器来表明一个组
件或其它类(比如另一个服务、管道或NgModule)拥有一个依赖。
3、赋值
4、*ngFor 循环
items:any[] = [111,222,33,444];
items:Array = [‘1111’,2222];
5、*nglf条件判断
flag:boolean=false;
6、*ngSwitch
7、属性[ngClass]、[ngStyle]
ts: flag:boolean=true;
activeColor:string=‘red’;
css: active{color:red};
//动态绑定class
8、管道(pipe)
用来对输入的数据进行处理、如大小写转换、数值和日期格式化
{{str | uppercase}}
//转换成大写{{str | lowercase}}
//转换成小写{{today | date:'yyyy-MM-dd HH:mm:ss'}}
//小数位数 接收参数格式为{最少整数}.{最少小数位数}-{最多小数位数}{{num | number:'1.2-4'}}
//保留2~4位小数9、执行事件
- <button (click)=“submit()”>//点击事件
- <input type=“text” (blur)=“blurHander()”/>//blur事件
- <input type=“text” (keydown)=“keyDownHander($event)”/>//键盘事件
六、双向数据绑定
注意引入:FormsModule
//app.module.ts - Import { FormsModule } from ‘@angular/forms’;
- <input type=“text” [(ngModel)]=“inputValue”>
-
{{inputValue}}
七、ViewChild
1、操作dom
2、routerLink 跳转页面默认选中路由
/*routerLinkActive 选中状态/
首页 新闻
3、根模块加载路由
import { AppRoutingModule } from ‘./app-routing.module’;
//动态加载路由的地方
imports:[AppRoutingModule]
4.参数传值
<a [routerLink]="[’/newsDetail’]" [queryParams]="{id:123}">详情
//接收
import { ActivatedRoute } from ‘@angular/router’;
constructor(public route : ActivatedRoute){ }
this.route.queryParams.subscribe((data)=>{
console.log(data);
})
5、动态路由传值
{path:‘newsDetail/:id’,component:NewsDetailComponent}
<a [routerLink]="[’/newsDetail’,key]">详情
//获取值
import { ActivatedRoute } from ‘@angular/router’;
constructor(public route : ActivatedRoute){ }
this.route.params.subscribe((data)=>{
console.log(data);
})
6、js 路由跳转
import { Router } from ‘@angular/router’;
constructor(public route : Router){}
goNewsDetail(){
this.route.navigate([’/newsDetail’,‘1234’])
}
import{ Router, NavigationExtras } from ‘@angular/router’;
goNewsDetail(){
let navigationExtras : NavigationExtras ={
queryParams:{‘id’:‘123’}
}
this.router.navigate([’/news’],navigationExtras);
}
7、嵌套路由
{
path : ‘home’, component : HomeComponent,
children : [
{ path : ‘welcome’, component : WelcomeComponent }
{ path : ‘setting’, component : SettingComponent }
]
}
//home页面
十一、Rxjs 异步数据流编程
https://cn.rx.js.org/
1、RxJs 处理异步
import { Observable } from ‘rxjs’;
//创建可观察对象
let stream= new Observable(observer=>{
setTimeout(()=>{
observer.next(‘observable timeout’);
},2000);
});
//订阅
stream.subscribe(value=>console.log(value));
Rxjs相比Promise要强大很多。比如Rxjs 中可以中途撤回、可以发射多个值、提供了
多种工具函数等等。
2、取消订阅unsbscribe()
//订阅
const d= stream.subscribe(value=>console.log(value));
setTimeout(()=>{
d.unsubscribe();
},1000)
3、订阅后多次执行
//pormise 方式
getPromiseIntervalData(){
return new Promise((resolve)=>{
setInterval(()=>{
resolve('promise 只会执行一次”);
},1000)
})
}
//rxjs方式
getRxjsIntervalData(){
return new Observable((observer)=>{
setInterval(()=>{
observer.next(‘rxjs 多次执行一次’);
},1000)
})
}
4、工具函数
//map,filter
import { map,filter } from ‘rxjs/operators’;
stream.pipe(
filter(val=>val%2 == 0),
map(value=>{
return value*value
})
)
//延迟执行
import { Observable, fromEvent } from ‘rxjs’;
import { map, filter, throttleTime } from ‘rxjs/operators’;
const button = document.querySelector(‘button’);
fromEvent(button,‘click’).pipe(
throttleTime(1000)
).subscribe(()=>console.log(‘clicked’))
十二、Angular 中的数据交互
get 请求
//app.module.ts中引入HttpClientModule 并注入
import { HttpClientModule } from ‘@angular/common/http’;
imports : [HttpClientModule]
//在用到的地方引入HttpClient 并在构造函数声明
import { HttpClient, HttpHeaders } from ‘@angular/common/http’;
//依赖注入
constructor(public http : HttpClient){}
//get 请求
const api=‘http://xxxxxxxx’
this.http.get(api).subscribe(response=>{
console.log(response)
})
post 请求
//手动设置请求类型
const httpOptions = {
headers : new HttpHeaders({‘Content-Type’:‘application/json’})
}
this.http.post(api, {username:‘admin’,password:‘123456’}, httpOptions).subscribe(response=>{
console.log(response)
})
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎