位置: IT常识 - 正文

Angular快速入门(angular 初学者快速上手教程)

发布时间:2024-01-17
Angular快速入门 Angular1.框架背景2.Angular CLI2.1 安装2.2 主要特性2.3 创建module,component,service,class3.架构3.1 模块3.2 组件3.2.1 创建组件3.2.2 组件生命周期3.2.3 组件交互3.3 模板3.3.1 插值语法3.3.2 属性绑定3.3.3 条件判断3.3.4 循环语句3.3.5 事件绑定3.3.6 双向绑定3.3.7 模板引用变量3.8 表单控件3.3.9 表单控件分组3.3.10 表单验证3.3.11 自定义表单验证3.3.12 管道3.4 服务3.5 依赖注入3.6 路由3.6.1 路由基本使用3.6.2 路由嵌套3.6.3 路由传参1.框架背景

推荐整理分享Angular快速入门(angular 初学者快速上手教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:angular视频教程,angular 初学者快速上手教程,angular 初学者快速上手教程,angular1教程,angular1教程,angular 初学者快速上手教程,angular入门教程,angular 初学者快速上手教程,内容如对您有帮助,希望把文章链接给更多的朋友!

Angular 是一个由 Google维护的开源JavaScript框架,用于在HTML和JavaScript中构建Web应用程序,是三大框架之首。

不管是1还是2,Angular最显著的特征就是其整合性。涵盖了M、V、C/VM等各个层面,不需要组合、评估其它技术就能完成大部分前端开发任务。这样可以有效降低决策成本,提高决策速度,对需要快速起步的团队是非常有帮助的。

由于它是从一个用来做原型的框架演化而来的,加上诞生时间很早(2009年,作为对比,jQuery诞生于2006年),当时生态不完善,连模块化机制都得自己实现。

但Angular 2就不同了,发布于2016年9月份,它是基于ES6来开发的,它的起点更高,整合了现代前端的各种先进理念,在框架、文档、工具等各个层面提供了全方位的支持

在Angular 中最具特色的就是依赖注入系统了,它把后端开发中用来解决复杂问题、实现高弹性设计的技术引入了前端

2.Angular CLI2.1 安装

​ Angular CLI用于简单,快速构建Angular2项目,只要掌握几行命令就能扣减前端架构。依赖于NodeJs和npm。

//安装脚手架npm install -g angular-cli//创建项目ng new project_name(项目名称)//启动项目cd project_nameng serve --open 2.2 主要特性Angular CLI 可以快速搭建框架,创建module,service,class,directive等;具有webpack的功能,代码分割,按需加载;代码打包压缩;模块测试;热部署,有改动立即重新编译,不用刷新浏览器;而且速度很快有开发环境,测试环境,生产环境的配置,不用自己操心;sass,less的预编译Angular CLI都会自动识别后缀来编译;typescript的配置,Angular CLI在创建应用时都可以自己配置;在创建好的工程也可以做一些个性化的配置,webpack的具体配置还不支持,未来可能会增加;Angular CLI创建的工程结构是最佳实践,生产可用;2.3 创建module,component,service,class

3.架构3.1 模块

模块组件的特征在于可以用于执行单个任务的代码块。 您可以从代码(类)中导出值。 Angular应用程序被称为模块,并使用许多模块构建您的应用程序。 Angular 的基本构建块是可以从模块导出的组件类。

export class AppComponent { title = 'dsc';}3.2 组件

组件是拥有模板的控制器类,主要处理页面上的应用程序和逻辑的视图。 组件可以拥有独立的样式。 注册组件,使用 @Component 注释,可以将应用程序拆分为更小的部分。

3.2.1 创建组件

使用ng命令ng generate component <component-name>创建的组件会自动生成在app.module中的引用,推荐使用ng命令生成组件

//快速创建ng g c xxx@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss']})

@Component最常用的几个选项:

selector:这个 CSS 选择器用于在模板中标记出该指令,并触发该指令的实例化。

template:组件的内联模板

templateUrl:组件模板文件的 URL

styleUrls:组件样式文件

styles:组件内联样式

3.2.2 组件生命周期

​ Angular 会按以下顺序执行钩子方法。你可以用它来执行以下类型的操作。

钩子方法用途时机ngOnChanges()当 Angular 设置或重新设置数据绑定的输入属性时响应。 该方法接受当前和上一属性值的 SimpleChanges 对象注意,这发生的非常频繁,所以你在这里执行的任何操作都会显著影响性能。在 ngOnInit() 之前以及所绑定的一个或多个输入属性的值发生变化时都会调用。注意,如果你的组件没有输入,或者你使用它时没有提供任何输入,那么框架就不会调用 ngOnChanges()。ngOnInit()在 Angular 第一次显示数据绑定和设置指令/组件的输入属性之后,初始化指令/组件。在第一轮 ngOnChanges() 完成之后调用,只调用一次。ngDoCheck()检测,并在发生 Angular 无法或不愿意自己检测的变化时作出反应。紧跟在每次执行变更检测时的 ngOnChanges() 和 首次执行变更检测时的 ngOnInit() 后调用。ngAfterContentInit()当 Angular 把外部内容投影进组件视图或指令所在的视图之后调用。第一次 ngDoCheck() 之后调用,只调用一次。ngAfterContentChecked()每当 Angular 检查完被投影到组件或指令中的内容之后调用ngAfterContentInit() 和每次 ngDoCheck() 之后调用ngAfterViewInit()当 Angular 初始化完组件视图及其子视图或包含该指令的视图之后调用第一次 ngAfterContentChecked() 之后调用,只调用一次。ngAfterViewChecked()每当 Angular 做完组件视图和子视图或包含该指令的视图的变更检测之后调用。ngAfterViewInit() 和每次 ngAfterContentChecked() 之后调用。ngOnDestroy()每当 Angular 每次销毁指令/组件之前调用并清扫。 在这儿反订阅可观察对象和分离事件处理器,以防内存泄漏在 Angular 销毁指令或组件之前立即调用。3.2.3 组件交互Angular快速入门(angular 初学者快速上手教程)

​ @Input

父组件通过`@Input`给子组件绑定属性设置输入类数据//父组件<app-hello [name]="'tina'"></app-hello>//子组件import { Component, Input } from '@angular/core';@Input()name!: string;ngOnInit(): void {console.log(this.name)}

​ @Output

​ 父组件给子组件传递一个事件,子组件通过@Output弹射触发事件

//父组件 <app-hello (addList)="addListFun($event)" [name]="'tina'"></app-hello>list:number[] = [1,2,3,4] addListFun(num:number){ this.list.push(num) }//子组件import { Component, Output,EventEmitter } from '@angular/core';@Output() addList = new EventEmitter() pushList(v:string){ console.log(this.inpValue) this.addList.emit(v) }

​ @ViewChild()

通过`ViewChild`获取子组件实例,获取子组件数据<app-hello #myChild [name]="'tina'"></app-hello><button (click)="getView($event)">获取</button>@ViewChild('myChild') child: any;constructor() { }ngOnInit(): void {}getView(e:any){console.log(this.child)this.child.setInpValue('我是一段数据')}3.3 模板

在 Angular 中,模板就是一块 HTML。在模板中,你可以通过一种特殊语法来使用 Angular 的许多功能

3.3.1 插值语法

​ 所谓 “插值” 是指将表达式嵌入到标记文本中。 默认情况下,插值会用双花括号 {{ 和 }} 作为分隔符

<h3>hello {{ name }}</h3>

​ 花括号之间的文本通常是组件属性的名字。Angular 会把这个名字替换为响应组件属性的字符串值

​ 括号间的素材是一个模板表达式我们可以在{{}}内编写js运算

<h3>hello {{ 1+1 }}</h3>3.3.2 属性绑定

Attribute绑定

<h3 [id]="'h3-dom'">hello {{ 1+1 }}</h3>

类绑定

//单一类绑定<h3 [class.h3-dom]="true">hello {{ 1+1 }}</h3>//多重类绑定<h3 [class]="'h3-dom title-dom min-title'">hello {{ 1+1 }}</h3><h3 [class]="{'h3-dom':true,'title-dom':false}">hello {{ 1+1 }}</h3><h3 [class]="['h3-dom','title-dom']">hello {{ 1+1 }}</h3>//ngClassexport class AppComponent { isActive = true;}<h3 [ngClass]="{'active': isActive}">hello {{ 1+1 }}</h3>

样式绑定

//单一样式绑定<h3 [style.width]="'300px'">hello {{ 1+1 }}</h3>//带单位的单一样式绑定<h3 [style.width.px]="'300'">hello {{ 1+1 }}</h3>//多重样式绑定<h3 [style]="'background:red;color:#fff'">hello {{ 1+1 }}</h3><h3 [style]="{'background':'red','color':'#fff'}">hello {{ 1+1 }}</h3>//ngStyleexport class AppComponent { isMax = false;}<h3 [ngStyle]="{'color': 'red'}">hello {{ 1+1 }}</h3><h3 [ngStyle]="{'font-size': isMax ? '24px' : '12px'}">hello {{ 1+1 }}</h3>3.3.3 条件判断

​ *ngIf是直接影响元素是否被渲染,而非控制元素的显示和隐藏

export class AppComponent { isMax = false; isMin = false;}<div *ngIf="isMax">Max title</div><div *ngIf="isMin">Min title</div>//解析完<ng-template [ngIf]="isMax"> <div>Max title</div></ng-template><ng-container *ngIf="isMax; else elseTemplate"> isMax为true</ng-container><ng-template #elseTemplate> isMax为false</ng-template>3.3.4 循环语句

​ 解析器会把 let color、let i 和 let odd 翻译成命名变量 color、i 和 odd

微语法解析器接收of,会将它的首字母大写(Of),然后加上属性的指令名(ngFor)前缀,它最终生成的名字是 ngFor 的输入属性(colors)

NgFor 指令在列表上循环,每个循环中都会设置和重置它自己的上下文对象上的属性。 这些属性包括 index 和 odd 以及一个特殊的属性名 $implicit(隐式变量)

Angular 将 let-color 设置为此上下文中 $implicit 属性的值, 它是由 NgFor 用当前迭代中的 colors 初始化的

export class AppComponent { colors:Array<string> = [ 'red', 'blue', 'yellow', 'green' ];}<div *ngFor="let color of colors let i=index let odd=odd"> {{odd}} {{i}} {{color}}</div>//解析完<ng-template ngFor let-color [ngForOf]="colors" let-i="index" let-odd="odd"> <div>{{odd}} {{i}} {{color}}</div></ng-template>export class AppComponent { status = 1;} <ul [ngSwitch]="status"> <li *ngSwitchCase="1">已支付</li> <li *ngSwitchCase="2">订单已经确认</li> <li *ngSwitchCase="3">已发货</li> <li *ngSwitchDefault>无效</li> </ul>3.3.5 事件绑定

​ Angular 的事件绑定语法由等号左侧括号内的目标事件名和右侧引号内的模板语句组成。目标事件名是 click ,模板语句是 onSave()

事件对象通过$event传递

export class AppComponent { onSave(){ console.log('点击了按钮') }}<button 2(click)="onSave($event)">Save</button>3.3.6 双向绑定

双向绑定是应用中的组件共享数据的一种方式。使用双向绑定绑定来侦听事件并在父组件和子组件之间同步更新值

ngModel指令只对表单元素有效,所以在使用之前需要导入FormsModule板块

import { FormsModule } from '@angular/forms';@NgModule({ // 申明组件内用到的视图 declarations: [ AppComponent, HelloComponent, ], //引入模块需要的类 imports: [ BrowserModule, AppRoutingModule, FormsModule ], //全局服务 providers: [], //根组件 bootstrap: [AppComponent]})export class AppComponent { userName='';}<div> 输入: <input [(ngModel)]="userName"><h1>你输入了: {{userName}}</h1></div>3.3.7 模板引用变量

模板变量可以帮助你在模板的另一部分使用这个部分的数据。使用模板变量,你可以执行某些任务,比如响应用户输入或微调应用的表单

在模板中,要使用井号 # 来

本文链接地址:https://www.jiuchutong.com/zhishi/298651.html 转载请保留说明!

上一篇:【目标检测】YOLOV1详解(目标检测yolov5)

下一篇:Webmin--一个用于Linux基于Web的系统管理工具(一个用于表示特定的web页的标识符url称为)

  • 苹果13有通话录音功能吗(苹果13有通话录音机功能吗)

    苹果13有通话录音功能吗(苹果13有通话录音机功能吗)

  • 红米k30pro通话声音小(红米k30pro通话声音小怎么修)

    红米k30pro通话声音小(红米k30pro通话声音小怎么修)

  • ppt第一页设置为封面(ppt怎么设置第一页与其他页不一样)

    ppt第一页设置为封面(ppt怎么设置第一页与其他页不一样)

  • 手机已用空间包括哪些内容(手机已用空间包括那些软件)

    手机已用空间包括哪些内容(手机已用空间包括那些软件)

  • 苹果xs屏幕发黄正常吗(苹果xs屏幕发黄怎么办)

    苹果xs屏幕发黄正常吗(苹果xs屏幕发黄怎么办)

  • 虎贲t310相当于骁龙多少(虎贲t310相当于麒麟多少)

    虎贲t310相当于骁龙多少(虎贲t310相当于麒麟多少)

  • 手机重力感应有什么用(手机重力感应有异常怎么回事)

    手机重力感应有什么用(手机重力感应有异常怎么回事)

  • 网易云歌单播放次数是指别人么(网易云歌单播放次数怎么增加)

    网易云歌单播放次数是指别人么(网易云歌单播放次数怎么增加)

  • 光猫有几个输出接口(光猫输出接口怎样区别)

    光猫有几个输出接口(光猫输出接口怎样区别)

  • 华为手机怎么弄两个系统界面(华为手机怎么弄微信分身功能)

    华为手机怎么弄两个系统界面(华为手机怎么弄微信分身功能)

  • 微信有夜间模式吗(微信有夜间模式吗安卓)

    微信有夜间模式吗(微信有夜间模式吗安卓)

  • ipadair2日版有4g吗(日版ipad air4)

    ipadair2日版有4g吗(日版ipad air4)

  • 适配器wlan已禁用是什么意思(适配器wlan已禁用该怎么办)

    适配器wlan已禁用是什么意思(适配器wlan已禁用该怎么办)

  • vsco中的hsl分别代表什么(vsco用法)

    vsco中的hsl分别代表什么(vsco用法)

  • iphone11promax充电需要多长时间(iphone11promax充电头多少w)

    iphone11promax充电需要多长时间(iphone11promax充电头多少w)

  • oppoace屏幕多大(oppoace多大尺寸)

    oppoace屏幕多大(oppoace多大尺寸)

  • 看朋友圈怎么选择时间(看朋友圈怎么选日期查看)

    看朋友圈怎么选择时间(看朋友圈怎么选日期查看)

  • 酒店怎么看有没有摄像头(酒店怎么看有没有浴缸)

    酒店怎么看有没有摄像头(酒店怎么看有没有浴缸)

  • 换手机号会影响微信吗(换手机号会影响微信使用吗)

    换手机号会影响微信吗(换手机号会影响微信使用吗)

  • 抖音的随拍和作品有什么区别(抖音的随拍和作者的区别)

    抖音的随拍和作品有什么区别(抖音的随拍和作者的区别)

  • mac系统怎么给文件夹加密?mac系统文件夹加密方法图文详解(mac怎么把文件发给别人)

    mac系统怎么给文件夹加密?mac系统文件夹加密方法图文详解(mac怎么把文件发给别人)

  • 最多下载量的浏览器是什么(浏览器下载量排名第一的是)

    最多下载量的浏览器是什么(浏览器下载量排名第一的是)

  • python中如何dataframe转换为ndarray?(Python中如何定义一个变量)

    python中如何dataframe转换为ndarray?(Python中如何定义一个变量)

  • Python使用协程的缺点(python 协程 yield)

    Python使用协程的缺点(python 协程 yield)

  • 金税三期系统的作用
  • 用友T3资产负债表公式
  • 销售清单要装订吗
  • 房地产项目转让条件
  • 增值税发票没了能补开吗
  • 所得税费用是哪类科目
  • 买车装具
  • 企业筹办期间发生的开办费会计分录
  • 其他收入月末需要结账吗
  • 什么情况下用资本公积科目
  • 贸易公司的印花税税率是多少
  • 股权转让金是什么意思
  • 减免的增值税如何账务处理
  • 当月支付租金没有发票
  • 电子承兑必须对账吗
  • 公对公转账需要多久到账
  • 小规模纳税人是小微企业吗
  • 专票的有效期是什么意思
  • 控股合并吸收合并新设合并图示
  • 银行利息为什么只算10个月
  • windows 11怎么用
  • 挂靠建筑公司没有票据怎么做账?
  • php伪静态规则写法
  • php时间计算
  • 深入解析wordpress
  • 华沙的教堂
  • thinkphp教程
  • matlab中自由变量
  • 消费税减免规定有哪些
  • 前端传给后端
  • yolov4参数设置
  • 数据库arc文件
  • 新会计准则增加了哪些科目
  • 股权转让认缴出资期数怎么填
  • css设置英文词距
  • 长期股权投资的明细科目有哪些
  • 增值税年末所有都要结平吗
  • 经营性收入包括成本吗
  • 企业原材料成本占比
  • 资产减值损失的定义
  • 国有划拔土地房整体可以买卖吗
  • 新政府会计制度与旧制度区别
  • 不同银行外币汇率不一样
  • 税务局返还的个税手续费是否纳税
  • 冲销管理费用怎么写凭证
  • 房地产企业印花税计入什么科目
  • 员工报销固定资产怎么算
  • 印花税的通俗理解
  • 建筑施工企业在12个月内第三次发生生产安全事故的
  • 没有票的成本怎么处理
  • 公司打款账号模板图片
  • 对公支付宝可以转个人银行卡吗
  • debian9.6安装教程
  • 当恢复系数e=1时碰撞属于什么碰撞
  • win2003server远程设置
  • linux ./ 命令
  • 怎么添加第二个人脸识别
  • win8系统怎么设置桌面图标
  • linux运行apache
  • marvell 网卡驱动
  • win10的uwp在哪
  • win7系统连不了网络
  • 利用Python中的turtle绘制乡村振兴
  • jquery 图片放大预览
  • android studio快捷键补全
  • android-ListView(1)-listview概览
  • shell脚本怎么进入指定目录
  • jquery的实现原理
  • Android EventBus发布/订阅事件总线
  • 江苏电子税务局操作手册
  • 如何知道公司所有账户
  • 国税新人什么时候入职
  • 小规模纳税人进口环节的增值税税率
  • 注销税务登记需要哪些材料
  • 南京电子税务局咨询电话
  • 如何打印高速公路电子发票
  • 自然人扣缴客户端重新安装后信息怎么同步
  • 神州浩天财务软件
  • 广西教师初级职称申报时间
  • 企业筹建期间发生的费用应计入什么账户
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号