位置: IT常识 - 正文

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

编辑:rootadmin
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称为)

  • qq音乐绿钻下载的歌曲是永久的吗(qq音乐绿钻下载的歌曲可以拷贝到u盘吗)

    qq音乐绿钻下载的歌曲是永久的吗(qq音乐绿钻下载的歌曲可以拷贝到u盘吗)

  • 手机qq打字看不见输入栏(手机qq打完字看不见)

    手机qq打字看不见输入栏(手机qq打完字看不见)

  • 已下单是发货了吗(已下单是发货了吗怎么查)

    已下单是发货了吗(已下单是发货了吗怎么查)

  • 苹果6s plus一直耳机模式是什么原因(苹果6s plus一直转圈圈)

    苹果6s plus一直耳机模式是什么原因(苹果6s plus一直转圈圈)

  • 小米10多少hz(小米10多少毫安电池)

    小米10多少hz(小米10多少毫安电池)

  • 电话屏幕闪是怎么回事(电话屏闪烁是怎么回事)

    电话屏幕闪是怎么回事(电话屏闪烁是怎么回事)

  • 苹果手机电量为什么会自己增加(苹果手机电量为什么显示黄颜色)

    苹果手机电量为什么会自己增加(苹果手机电量为什么显示黄颜色)

  • 淘宝商品被监管一般几天被放出来(淘宝商品被监管删除再恢复会怎么样)

    淘宝商品被监管一般几天被放出来(淘宝商品被监管删除再恢复会怎么样)

  • 小米8可以投屏电脑吗(小米8可以投屏在墙上吗)

    小米8可以投屏电脑吗(小米8可以投屏在墙上吗)

  • 计算机中的显卡属于什么设备(计算机中的显卡是指)

    计算机中的显卡属于什么设备(计算机中的显卡是指)

  • 苹果6白屏出现苹果标志开不了机(苹果6白屏出现苹果标志开不了机,我里面的资料怎么办)

    苹果6白屏出现苹果标志开不了机(苹果6白屏出现苹果标志开不了机,我里面的资料怎么办)

  • load tray1是什么意思(load tray1 a4 210×297)

    load tray1是什么意思(load tray1 a4 210×297)

  • 剪映为什么不能识别字幕(剪映为什么不能文本朗读)

    剪映为什么不能识别字幕(剪映为什么不能文本朗读)

  • 乐视2有otg功能吗

    乐视2有otg功能吗

  • Mate30保时捷版电池容量多少

    Mate30保时捷版电池容量多少

  • 手机npc啥意思(手机npc有用吗)

    手机npc啥意思(手机npc有用吗)

  • 小米4nfc怎么开机(小米4nfc功能是什么意思)

    小米4nfc怎么开机(小米4nfc功能是什么意思)

  • 苹果11系列电池百分比设置(苹果11系列电池数据能修改吗)

    苹果11系列电池百分比设置(苹果11系列电池数据能修改吗)

  • 红米k20pro是多少赫兹刷新率(红米k20pro是多少w快充)

    红米k20pro是多少赫兹刷新率(红米k20pro是多少w快充)

  • wps表格如何批量减数字(wps表格如何批量删除部分内容)

    wps表格如何批量减数字(wps表格如何批量删除部分内容)

  • s10是双卡双待吗(s10是双卡双待吗手机)

    s10是双卡双待吗(s10是双卡双待吗手机)

  • 微信可以单独设置三天可见吗(微信可以单独设置一个人三天可见吗)

    微信可以单独设置三天可见吗(微信可以单独设置一个人三天可见吗)

  • pr导出手机竖版格式(pr导出手机竖屏)

    pr导出手机竖版格式(pr导出手机竖屏)

  • 常见的电脑系统有哪些?有什么区别?(常见的电脑系统类型)

    常见的电脑系统有哪些?有什么区别?(常见的电脑系统类型)

  • Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(项目演示、涉及知识点、源码分享)(vue实例完整项目源码)

    Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(项目演示、涉及知识点、源码分享)(vue实例完整项目源码)

  • 企业所得税年报怎么查询
  • 收到个人开票会计分录怎么做
  • 逆回购会不会亏本金
  • 未取得房屋产权证租赁
  • 应交税费和税金及附加的关系
  • 金银首饰以旧换新增值税
  • 纺织品产量
  • 微信企业版支付
  • 冲红电子发票是什么意思
  • 劳务报酬个人所得税怎么计算
  • 合并报表盈余公积等于母公司盈余公积
  • 全年一次性奖金单独计税怎么算
  • 取得的管理部门证书
  • 库存商品进价成本
  • 财务费用利息如何结转
  • 应交增值税减免税额
  • 国外公司怎么付款给国内
  • 固定资产报废税费怎么处理
  • 技术转让所得减半征收计算
  • 关于补充养老保险
  • 金融资产交易中心是干嘛的
  • 制造行业库存该怎么处理
  • 持有至到期投资在资产负债表怎么填
  • 固定资产发票可以抵税吗
  • 个体工商户核定征收怎么报税
  • 季度报税过了怎么办
  • 资产负债表期初和期末指的是什么
  • 辞退补偿入账
  • 盈余公积的提取基数
  • laravel 微服务架构
  • stk al00华为
  • pull-hi
  • php字符串赋值
  • php设计思路
  • php扫一扫识别代码
  • 注意力机制cbam
  • 基于YOLOv5的中式快餐店菜品识别系统
  • html的标签大全
  • html+css网页设计
  • 购进原材料款项未付应编制什么凭证
  • 企业提取盈余公积的比例
  • 投资公司如何注册勘察设计工程师证书
  • springbootredis密码加密
  • db2数据库备份文件为bkd格式
  • 资本性支出与资本性支出(基本建设)的区别
  • 白条怎么收拾
  • 红字发票开错了是可以作废的吗?
  • 会计上视同销售的八种情况是哪些?
  • 税控盘服务费小规模可以抵扣吗
  • 出现什么情况企业不能持续经营
  • 计提工资是计提哪个月的
  • 重分类调整的内容包括什么
  • 营改增阶段
  • 房租费一次不给完怎么写收条
  • 农产品收购发票如何抵扣进项税
  • 残保金超比例奖励政策
  • 委托加工物资贷方
  • 办公室装修费用怎么入账
  • 公司投资款怎么算
  • mysql2002解决办法
  • win8 win8.1
  • 苹果mac怎么下载淘宝
  • 把winpe安装至系统盘
  • hyper-v以后安装操作系统
  • win10系统无法更改
  • windows10无法关闭
  • win7 蓝屏1e
  • win7如何更改欢迎界面
  • win10更新后有线网络无法使用
  • jquery通过扩展select控件实现支持enter或focus选择的方法
  • ntfs权限怎么设置
  • python 单例
  • jQuery插件ajaxFileUpload使用详解
  • python算法怎么用
  • 安卓wifi打不开解决
  • jquery mobile开发环境
  • javascript的核心组成部分
  • js判断浏览器内核和版本
  • 一般纳税人取得苗木普票可以抵扣吗
  • 所得税季度预缴,年度汇算清缴
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设