Angular 基础
angular 需要在node.js V10.9 以上版本使用
一、搭建angulaur 脚手架
1.下载并安装脚手架工具
npm i -g @angular/cli
2.运行脚手架工具,创建空白项目
ng new myngapp01
3.进入空白项目并运行开发服务器
cd myngapp01npm start 或者 执行 ng serve
4.进入客户端访问测试
http://localhost:4200
二、Angular 项目启动过程分析
1.angular.json : NG 项目的配置
index:"./src/index.html" ==> <app-root></app-root>
main:"./src/main.ts" ==> 项目打包的入口文件
2.main.js > bootstrapModule(AppModule) ==> 引导项目启动
3.app.module.ts > bootstrap:[AppComponent]
4.app.component.ts > selector:"app-root"
> templateUrl:'app.app.componet.html'
5.app.component.html > HTML 片段
三、Angular 核心概念:组件
在终端,输入 npx ng g component 组件名,自动创建组件
在Angular 中,组件必须放在模块中,否则无法使用;
1)组件(component) = 模板(template)+ 脚本(Script) + 样式(style)
2)也可以将组件中的 模板和样式全部拆分出来
模板:templateUrl:'路径'
样式:styleUrls:["路径”]
3)在终端,输入 npx ng g component 组件名,可以一次性创建出组件(包括模板+脚本+样式)
1.创建组件 class
==> 在app包中,创建.ts组件
// 创建组件
@Component({template: "<h2>这是我的第一个组件mycom</h2>",selector:'mycom'
})
export class MyComponent {}
2.在某个模块中注册组件class
==> app.module.ts > import { 组件名 } from '路径' 引入模块
> 在模块中声明注册模块
// 引入 MyComponent 组件
import { MyComponent } from './mycom';// 模块
@NgModule({// 声明注册组件declarations: [AppComponent,MyComponent],imports: [BrowserModule,AppRoutingModule],providers: [],bootstrap: [AppComponent]
})
3.使用组件
在app.component.html 中使用 组件,组件标签名为在组件中 selector 定义的名字
<h1>我的Angular项目</h1>
<hr>
<!-- 在Html中使用组件 -->
<mycom></mycom>
四、Angular核心概念之:数据绑定
(1)HTML绑定 ==> 可以使用 表达式运算;和VUE一样;
(2)属性绑定 ==> 形式1:直接在属性上用{{}} <p title="{{ }}"></p>
形式2:使用中括号 <p [title]="{{ }}"></p>
注意:属性动态绑定的时候,需要做字符串拼接,如:<image src=" './asset/' + imgUrl ">
(3)事件绑定 ==> 在 html 文件中的标签上,使用(click)= "printFn()"
==> 在 组件.ts文件中,export class 类中,写对象的函数;
注意:在Angular 中,事件必须加小括号;
五、Angular 指令系统
Angular 中得指令分为三类:
(1)结构性指令:会影响 DOM 结构得,使用 * 号开头,如 *ngIf *ngSwitchCase
(2)属性型指令:不会影响DOM 结构,知识影响元素得外观行为,使用中括号 [] ,如[ngClass] , [ngSwitch]
Angular 中的指令,使用 *ngFor || [ ngStyle ]这中方法来书写
(1)循环指令 使用 for-of 的方式;
*ngFor= " let item of items; index as i "
(2)条件渲染 使用 *ngIf=" 条件;else 代号 "
注意:else 对应得模板必须使用 <ng-template #代号></ng-template > 包裹
<!-- ngIf else 必须使用ng-template 模板来包裹else 的DOM-->
<div *ngIf=" age >= 18 ;else forChildren">此处是家长看到的内容。。。
</div>
<ng-template #forChildren><p>此处是孩子看的内容。。。</p>
</ng-template>
(3)样式绑定 [ngStyle]=" 变量|| 表达式 "
class得动态绑定==> [ngClass] = " obj "
==> obj 在 .ts 脚本文件中 编辑,obj 对象得 内容 :key 为 .css 文件中得类选择器名,value为true 或者 false ;表示选中改样式,或者不选
// .html 模板文件
<div [ngClass]="myClassObj" (click)="changeClass()">class得动态绑定
</div>// .scss 样式文件
.bg {width: 200px;height: 200px;background-color: #efefef;
}
.bd{border: 1px solid red;border-radius: 5px;
}
.fs{font-size: 36px;font-weight: 700;
}// .ts 脚本文件
export class Mycom06NgStyleComponent implements OnInit {myClassObj = {bg: true,fs: true,bd: true}changeClass(){this.myClassObj.fs = !this.myClassObj.fs};
}
(4)[ngSwitch] = " 表达式 "
<div [ngSwitch]=" leave "><div *ngSwitchCase=" 'nomal' ">普通用户</div><div *ngSwitchCase=" 'vip' ">贵宾用户</div><div *ngSwitchCase=" 'godalVip' ">黑金用户</div><div *ngSwitchDefault>请登录</div>
</div>
(5)双向数据绑定 [(ngModel )]
方向1:Model => View ,模型改变视图,用[]绑定
方向2:View => Model ,视图改变模型,用()绑定
所以 ngModel 使用 [ (ngModel) ]
<input/select/textarea [ (ngModel) ]=" 变量 ">
注意:想要使用 ngModel 指令,必须在主模块 app.module.ts 文件中 导入 FormsModule 模块哦
import { FormsModule} from "@angular/forms"
// 模块
@NgModule({// 声明注册组件declarations: [AppComponent,MyComponent],imports: [// 浏览器模块,只有用于web ,就要导入这个模块;包含了 common 模块BrowserModule,// FormsModule 模块导入FormsModule,AppRoutingModule],providers: [],bootstrap: [AppComponent]
})
TIPS: 监听 model 改变事件 (ngModelChange)= " modelChange() "
这里得回调函数,比如可以用在搜索框中发送ajax请求;当用户输入时,发送请求,请求数据
<!-- ngModelChange 事件事件 监听 model 数据改变 -->
<input [(ngModel)]="usename" type="text" placeholder="请输入用户名" (ngModelChange)="usenameChange()">
六、Angular 核心概念:过滤器(管道 Pipe)
Filter:过滤器,本质是一个函数,用来处理数据,再以新得格式进行输出
创建管道对象得简便工具:ng g pipe 管道名
1.自定义管道得步骤:
(1)创建管道 class 类,实现转换功能 ,在 xxx.pipe.ts 文件中创建管道
说明:管道得 transform 方法除了val 形参,还可以接收其他得参数,调用管道时用冒号为这些参数赋值,例如 :{{ e.empSex | sex:'en' }}
import { Pipe } from "@angular/core";
// 管道 Pipe 装饰器
@Pipe({name:'sex'
})
export class SexPipe {// 管道到执行过滤任务得是一个固定得函数// 相当于 filter 过滤器transform(val:number) {if (val == 1) {return '男'} else if (val == 0) {return '女'} else {return '未知'}}
}
(2)在模块中注册管道,app.module.ts 文件中注册管道
import { SexPipe } from './sex.pipe';
// 模块
@NgModule({// 声明注册组件declarations: [// 注册管道SexPipe],imports: [// 浏览器模块,只有用于web ,就要导入这个模块;包含了 common 模块BrowserModule,// FormsModule 模块导入FormsModule,AppRoutingModule],providers: [],bootstrap: [AppComponent]
})
(3)使用管道,在 模板文件 .html 文件中使用管道
<!-- 表格 -->
<table><thead><tr><th>ID</th><th>姓名</th><th>工资</th><th>性别</th><th>年龄</th></tr></thead><tbody><tr *ngFor="let item of employList"><td>{{ item.id }}</td><td>{{ item.name }}</td><td>{{ item.salay }}</td> // 这里直接使用 管道得name:'sex' ,来自自动处理数据<td>{{ item.sex | sex }}</td><td>{{ item.age }}</td></tr></tbody>
</table>
2.Angular 中得预定义得管道
(1) lowercase :转换为小写,{{ uname | lowercase }}
(2)uppercase :转换为大写,{{ uname | uppercase }}
(3)titlecase :转换为首字母大写 ,{{ uname | titlecase }}
(4)slice :字符串截取,{{ ename | slice:start [ :end ] }} start 为截取开始得下标,end为截取结束得下标
(5)json :把JS对象转化为JSON 字符串,{{ obj | json }}
(6)number:对数字进行处理,转为指定得整数和小数 位数,
{{ num | number }} {{ num | number :'4.2-2' }} 4表示整数位数至少是4位(不够4位自动补0),点2表示小数位最少为2位,-2表示,小数位最多有2位;
(7)currency :把数字转换位货币格式字符串:{{ slary | currency:'¥' }}
(8)date :日期转换管道,转换时间戳字符串指定格式得日期:{{ str | date:'yyyy-MM-dd HH:mm:ss' }}
七、Angular核心概念:服务和依赖注入
简化工具:ng g service 服务名
1.创建对象得两种方式
==> 方式1:手动创建式 let obj = new Car()
==> 方式2:依赖注入式 不需要自己new,只需要声明依赖;服务提供者就会创建被依赖得对象,注入给声明依赖者
2.创建服务对象得步骤:
1)创建服务对象并指定服务提供者,在log.service.ts文件中创建服务对象,并导出
import { Injectable } from "@angular/core";
// 装饰器
// 所以得服务对象都是被注入得
@Injectable({// 指定当前服务对象在 "根模块"中提供 --AppModuleprovidedIn:'root'
})
export class LogService{doLog(action:string) {let uname = 'admin'let time = new Date().valueOf()// let action = '添加了新得商品:xxx'console.log(`管理员:${uname}时间:${time}动作:${action}`);}
}
2)在组件中声明依赖,服务提供者就会自动注入,组件直接使用服务对象即可;
在构造器得形参中设置log得类型=服务名,可以直接获取依赖服务对象得方法函数,并赋值给变量,给后续函数来调用;
import { LogService } from "../log.service";
@Component({templateUrl: './mycom03.component.html',selector: 'mycom03',styleUrls:['./mycom03.component.css']
})
export class MyCom03Component implements OnInit{// 构造器log:LogServiceconstructor(log: LogService) {console.log('log',log);this.log = log} addShop() {console.log('正在添加商品');let action = '添加了新得商品:xxx'this.log.doLog(action)}deleteShop() {console.log('正在删除商品');let action = '删除了商品:xxx'this.log.doLog(action)}
}
八、Angular 官方提供得请求服务对象:HttpClient Service
HttpClient Service 服务对象用于向指定得URL发起异步请求,使用步骤:
1)在主模块中导入HttpClient 服务所在得模块
在 app.module.ts中 import 导入HttpClientModule 模块;
Angular 基础相关推荐
- 第一章、第一节 Angular基础
第一章.第一节 Angular基础 让我们先来看看Angular是如何实现组件模式的. 组件模式 Angular 应用程序使用组件模式.你可能听说过这个模式,它不仅用于软件开发,还用于制造.建筑和其他 ...
- angular基础学习
angular基础学习 核心 一. angular环境搭建 1. 安装前准备: 1.1 安装nodejs 1.2 安装 cnpm, 尽量不要使用 1.3 使用npm/cnpm命令安装angular/c ...
- Angular基础教程+Demo项目——尽可能全面一些——第二节
一.前言 Angular是一个类似于后端开发模式的前端开发框架,学习起来非常简单,当然需要一定的前端基础,本篇接着第一节继续介绍Angular基础 学习过程中所写的Demo_GitHub--学习Ang ...
- Angular 基础教程(7.0)
课程亮点 按照初学者的学习路线规划内容 所有代码均采用 Angular 7.0 版本 覆盖日常开发中使用频率最高的特性 To B.To C 型界面,移动端 PWA 全面覆盖 附赠 3 个附录,对比 5 ...
- 【Angular 基础入门】——知识点整合
文章目录 快速入门 一.Angular 环境搭建 二.基本概念 模块简介 组件简介 服务与依赖注入 路由 三.基础教程 使用路由 自定义组件 常用结构型指令 事件绑定 模板引用 模板表达式中的运算符 ...
- Angular基础教程
https://www.runoob.com/angularjs/angularjs-tutorial.html 教程文档 基本上学完这些,你就能正常的开发项目了,注意是正常开发而不是架构 阅读本教程 ...
- Angular基础(五) 内建指令和表单
2019独角兽企业重金招聘Python工程师标准>>> Angular提供了一些内建的指令,可以作为属性添加给HTML元素,以动态控制其行为. 一.内建指令 a) *ngIf,可 ...
- Angular *NgFor - angular 基础教程
转载自 http://www.ngui.cc/news/show-115.html 在 Angular 中我们可以使用 ngFor 指令来显示数组中每一项的信息. 使用 ngFor 指令 更新 Mai ...
- Angular基础知识学习记录
红色字体 疑问:后端修改数据库数据时,网络异常,导致修改失败,抛出异常,前端该怎样处理呢?\textcolor{red}{疑问:后端修改数据库数据时,网络异常,导致修改失败,抛出异常,前端该怎样处理呢 ...
最新文章
- 人群行为分类数据库--Novel Dataset for Fine-grained Abnormal Behavior Understanding in Crowd
- 2021年了,为什么约会软件算法仍然如此糟糕?
- Unity 类似FingerGestures 的相机跟随功能
- Java的知识点18——数组存储表格数据、冒泡排序的基础算法、冒泡排序的优化算法、二分法查找
- Mpg123源代码详解
- VS2008中设置字体大小和添加显示行号
- 处理 read_csv 报错 OSError:Initializing from file failed
- VIM学习笔记 配置文件(vimrc)
- Stackoverflow 最受关注的 10 个 Java 问题
- python 如何查看列表的维度?
- 实验1 java程序基础_《Java程序设计》实验1
- CentOS 7.0 关闭防火墙
- 可信人工智能白皮书(概要)
- 关闭TOMCAT日志的三个方法
- HTTP Authorization
- RabbitMQ(一) | MQ技术对比,以及对RabbitMQ五种消息模型的使用
- smartbi服务器缓存文件,导出资源 - Smartbi V10帮助中心 -
- 计算机网络-自顶向下方法-笔记【第3章-传输层】
- tf_Course6循环神经网络
- How to Add a Dotted Underline Beneath HTML Text
热门文章
- 【学习的好去处】:http://ucenter.51cto.com/reg_01.php?fromuid=981939reback=http://down.51cto.com
- 详解二叉树的后序遍历
- Graylog 中文手册 常用功能和问题整理
- 史上最经典的K线买入技巧
- 海盗分赃问题-----简化问题,分而治之
- Focal Loss与GHM 理解与使用
- python中用于生成随机数的函数的简单总结
- tomcat优化(五)tomcat调优
- Linux手机众筹1000万
- 华中科技大学计算机考研书籍,2020年华中科技大学计算机应用技术考研经验分享...