Angular基础学习笔记

本文是Angular初学者的学习笔记,详细介绍了Angular框架的基础知识,包括环境搭建、项目创建、组件、服务、指令、数据绑定、路由等核心概念。还探讨了Rxjs异步数据流编程,以及Angular中的图表和流程图绘制。通过实例展示了Angular在中大型企业级项目中的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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、赋值

{{username}}
//静态数据
//动态数据

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、执行事件

    1. <button (click)=“submit()”>//点击事件
    2. <input type=“text” (blur)=“blurHander()”/>//blur事件
    3. <input type=“text” (keydown)=“keyDownHander($event)”/>//键盘事件
      六、双向数据绑定
      注意引入:FormsModule
      //app.module.ts
    4. Import { FormsModule } from ‘@angular/forms’;
    5. <input type=“text” [(ngModel)]=“inputValue”>
    6. {{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编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
    4. 全新的 KaTeX数学公式 语法;
    5. 增加了支持甘特图的mermaid语法1 功能;
    6. 增加了 多屏幕编辑 Markdown文章功能;
    7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    8. 增加了 检查列表 功能。

    功能快捷键

    撤销: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.

    图片: Alt

    带尺寸的图片: Alt

    居中的图片: Alt

    居中并且带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block
    var foo = 'bar';
    

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目Value
    电脑$1600
    手机$12
    导管$1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列第二列第三列
    第一列文本居中第二列文本居右第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPEASCIIHTML
    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)=(n1)!nN 是通过欧拉积分

    Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

    张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值