开始准备
安装nodejs
1
npm -v
安装@angular/cli
1
npm i -g @angular/cli
CLI命令建立项目
1
ng new ng7demo
选择是否加入路由模块以及哪种css预处理器
可ctrl+c取消自动安装node_modules,手动进入项目npm install node-sass安装不上可切换淘宝镜像库或者用cnpm安装
- npm config set registry https://registry.npm.taobao.org npm install
or
npm install -g cnpm cnpm install
启动项目
1
ng serve --open // 自动打开浏览器 http://localhost:4200/
语法
生成组件
1 | // 标签app-article 如果不想要或者自定义前缀可在angular.json里修改prefix属性 |
组件引用
1 | // 标签方式引用 |
1 | // @Component装饰器标识这是一个组件 |
插值表达式
将业务逻辑中的数据通过插值表达式显示在模板文件,即html页面上,或者将html页面上的事件传输到业务逻辑。
1 | <p>标题是{{title}}</p> |
属性绑定
1 | <img [src]="imgSrc" /> |
插值运算 加减乘除/字符串拼接/三元/方法调用
1 | {{5+3}},{{5-3}},{{5*3}},{{5/3}},{{ "a" + "b"}},{{true?1:0}} |
事件绑定
1 | <button (click)="showModal('click')"><button> |
模板指令
判断指令
1 | <img *ngIf="imgShow;else #p1"/> |
样式指令
1 | <p [ngClass]="{bg:true}">这段内容应用的是类样式。</p> |
循环指令
1 | <ul> |
管道符
1 | {{currentTime | date: "yyyy-MM-dd HH:mm:ss" }} |
父子组件通信
1 | // 输入 |
localsStorage
服务总线
注册服务
1
2
3
4
5
6
7
8
9
10
11ng g s ./services/eventBus
import { Injectable } from "@angular/core";
import { Observable, Subject } from "rxjs";
// 服务总线 组件间分享数据
@Injectable({
providedIn: "root"
})
export class EventBusService {
public eventBus: Subject<string> = new Subject();
constructor() {}
}组件内发射数据
1
this.eventBusService.eventBus.next("child组件发送的数据");
组件接收数据
1
2
3this.eventBusService.eventBus.subscribe(arg => {
console.log(`接收到事件${arg}`);
});
标签变量引用
1 | <child title="我的子组件" #child (follow)="getFollow($event)"></child> |
组件注册
1 | import { BrowserModule } from '@angular/platform-browser'; |
路由导航
1 | import { NgModule } from '@angular/core'; |
1
### http服务
this.httpClient.request(UserService.METHOD_POST, url, options).subscribe((data)=>{});
1
2
## ng7的新特性`
npm i 和 npm install的小区别
1、用npm i 安装的模块无法用npm uninstall卸载,需要用npm uninstall i命令
2、npm i 会帮助检测与当前node版本最匹配的npm包 版本号,并匹配出来相互依赖的npm包应该提升的版本号
3、部分npm包在当前node版本下无法使用,必须使用建议版本
4、安装报错时intall肯定会出现npm-debug.log 文件,npm i不一定
npm install 的执行过程
- 发出npm install命令
- 查询 node_modules 目录之中是否已经存在指定模块
- 若存在,不再重新安装
- 若不存在npm 向 registry 查询模块压缩包的网址下载压缩包,存放在根目录下的.npm目录里
- 解压压缩包到当前项目的 node_modules 目录