安装Angular cli
npm i -g angular-cli
创建项目
npm new project_name(项目名称)
启动项目
cd project_name(j进入新创建的项目)
ng serve --open
创建组件
ng g c xxx
会在根组件的统计生成一个组件xxx文件夹,比如ng g c hello 就会生成一个hello组件文件夹,里面是这个hello组件的四个文件,同时angularcli脚手架会自动把这个组件引入到app.module.ts中。


引用组件:
hello组件的ts文件中,可以通过selector属性得到组件名,引用时直接通过<组件名></组件名>的方式即可。


angular语法
模版:
在angular中,模版就是一块HTML。
1、插值语法
就是将表达式嵌入到标记文本中,默认情况下,插值会用双花括号{{}}作为分隔符。
在组件A 的js文件中声明的变量,可以直接用在相对应组件A的html中通过{{}}花括号引用:


支持:简单的JS运算、三元表达式;不支持循环、if判断


2、属性绑定
2-1、attribute绑定
语法:使用[属性名] ,如果要绑定字符串作为属性,就要使用" '属性名' ";
如果不使用" ' ' ",则会默认为属性绑定的是变量



2-2、类绑定
单类名、多类名

2-3、样式绑定
单一样式绑定、多样式绑定

3、条件判断
使用*ngIf 直接影响元素是否被渲染,而非控制元素的显示和隐藏。


elseTemplate这个名称是唯一的,模版中不能出现多个elseTemplate,如果出现则只会渲染第一个同名的模版,此时可以将elseTemplate的名称修改即可

angular语法快捷键插件

4、循环语句
两种方式:*ngFor 、 [ngSwitch]
声明两个变量

使用*ngFor循环语句:


使用[ngSwitch]循环语句,结合*ngSwitchCase使用:

5、事件绑定
在标签上,使用(click)添加绑定事件 。

html中添加绑定事件

ts中声明方法:

6、模版引用变量


 
 
7、数据双向绑定ngModel
双向绑定是应用中的组件共享数据的一种方式,使用双向绑定来侦听事件并在父组件和子组件之间同步更新值,ngModel指令只对表单元素有效,且在使用之前需要导入FormsMoudle模块 。
写法:在表单元素上使用[(NGModel)]="要进行双向绑定的变量"。
1、引入FormsMoudle模块

2、在模版中使用双向绑定变量
声明变量title

在模版中给表单元素使用[(ngModel)],双向绑定变量

双向绑定页面显示:在input表单中输入文字,下面引用了变量的位置同时发生更新;

8、单个动态表单控件

1、要使用响应式表单控件,就要从@angular/forms 包中导入ReactiveFormsModule,并把它添加到NgMoudle的imports数组中

2、要注册一个表单控件,就要导入FormControl类并创建一个FormControl的新实例,将其保存为类的属性。
要在哪个组件中使用表单控件,就要在哪个组件的js/ts文件中引用,并创建实例。
比如hello组件要使用动态表单控件,就要现在hello组件的js/ts中引入;

引入后,在组件hello的js/ts文件中创建实例 。

模板表单元素动态绑定变量,注意使用动态表单控件时,要通过name.value调用

如何修改动态表单绑定的变量呢?通过FormControl提供的setValue()方法;

9、表单控件分组


上面提到的FormControl 是怎么引入的,FormGroup同理。





10、表单验证
表单元素添加required关键字标识必填,通过绑定ngModel的引用可以拿到当前组件的信息,通过引用获取到验证的信息。
首先要给表单元素通过#绑定模版引用变量,这个引用变量需要等于ngModel,才能拿到当前表单绑定的响应状态

当表单元素设置了required时表示必填但是没有输入时,通过#模版引用变量,可以获取到当前表单元素的验证信息;


11、自定义表单验证
在组件内引入validators、formBuilder模块



12、angualr管道

按照上方的管道使用时,单词字母均要改成小写,并且去掉Pipe ;管道可以连续调用,连续调用时是从左往右逐层执行,见下

自定义管道,使用脚手架命令:
ng g p 自定义管道名 ,执行命令得到以下:

 
13、组件的声明周期以及属性传递


注意:ngOnchanges生命周期在ngOnInit钩子函数之前。
14、组件交互
子传父:
子组件给父组件传递数据,使用@Output

父传子:
方法①:
@ViewChild,父组件中通过给子组件添加#myChild 字样,可以获取子组件实例,获取子组件数据。


方法②:
父组件给子组件传递属性,父组件直接在子组件标签通过[ 属性名 ]的方式传递属性,子组件通过@Input接收父组件传递过来的属性;


15、Angular服务