1、安装脚手架:npm install -g @angular/cli

安装之后,输入命令 ng v:
Package Version
------------------------------------------------------
@angular-devkit/architect 0.13.3
@angular-devkit/core 7.3.3
@angular-devkit/schematics 7.3.3
@schematics/angular 7.3.3
@schematics/update 0.13.3
rxjs 6.3.3
typescript 3.2.4

2、创建angular项目,命令格式:ng new 项目名称

选择是否需要路由,以及css等.

可以使用ng new 项目名称 --skip-install,会跳过安装项目依赖的过程

3、启动项目:ng serve --open

4、创建组件:ng g component components/组件名称

表示在components文件下创建一个组件

5、声名属性

  /*
修饰符---合java基本一样
public 默认、protected、private
*/
public title = "这是一个title属性,lalalaaaa"; mas = "这是一条数据msg";//默认public username:string = "张三";//声名属性类型 student:any = "学生";//任意类型 userinfo:any = {//对象
username:"李四",
age:18,
sex:"男"
}
//集合
list:any[] = ["111", "222", "333"];
items:Array<number> = [111, 222, 333]

6、标签属性绑定值

//使用[ ]
<div [title]="title">学生</div>

7、模板中绑定html

content= "<h3>这是一个html标签---h3</h3>";

<div >{{content}}</div>//原样输出
<div [innerHTML]="content"></div>//会解析html在输出

8、条件判断

<div *ngIf="flag == true">
<img src="assets/images/t1.jpg" alt="" width="100" height="80">
</div> <li *ngFor="let item of numlist; let key=index;">
<span [ngSwitch] = "key">
<p *ngSwitchCase = 0 > {{key}}--{{item}} </p>
<p *ngSwitchCase = 1 > {{key}}--{{item}} </p>
<p *ngSwitchDefault> {{key}}--{{item}} </p>
</span>
</li>

9、click点击事件, keydown/keyup键盘事件

<button (click)="click()">点击</button>

click() {
alert("点击了");
} <button (keydown)="keydown($event)">点击</button> keydown(e) {
if(e.keyCode = 13){
console.log("敲击了键盘回车键")
}
}

10、数据的双向绑定, 需要导入FormsModule

<input type="text" [(ngModel)]="val">
<p>输入的内容:{{val}}</p>

11、服务创建:ng g service 目录/服务名称;

如需使用该服务还需要在根模块中引入并配置,在具体的模块中使用该服务也需要引入。

//引入服务
import {RequestService} from '../../services/request.service';
//声名服务
constructor(public request:RequestService) { }
//使用服务
let data = this.request.getData();

12、回调函数、promise、以及rejs获取异步方法里面的数据

回调:
getCallBack(cb){
setTimeout(() => {
var username = "张三";
//return username; 外部无法接收
cb(username);
}, 3000);
} promise:
getPromiseData (){
return new Promise((resolve,reject) => {
setTimeout(() => {
var username = "李四";
resolve(username);
}, 3000);
});
} Rxjs:
getRxjsData (){
return new Observable(observable => {
setTimeout(() => {
var username = "王五";
observable.next(username);
}, 3000);
});
} 调用:
this.request.getCallBack(callBackData => {
console.log(callBackData);
}); this.request.getPromiseData().then(promiseData => {
console.log(promiseData);
}); this.request.getRxjsData().subscribe(rxjsDate => {
console.log(rxjsDate);
})

13、angular中get和post请求以及jsonp请求

getData(){
let api = 'http://a.itying.com/api/productlist'
this.http.get(api).subscribe((response:any) => {
console.log(response);
this.list = response.result;
});
} postData() {
const httpOptions = {headers: new HttpHeaders({'Content-type': 'application/json'})}
let api = 'http://127.0.0.1:3000/login';
this.http.post(api, {'useename':'张三', 'age':20, 'sex':'man'}, httpOptions)
.subscribe((res:any) => {
console.log(res);
});
} //需要注入HttpClientJsonpModule
//使用jonp获取服务器数据,跨域的一种解决方案,服务器必须支持jsonp
jsonpData(){
let api = 'http://a.itying.com/api/productlist'
this.http.jsonp(api, 'callback').subscribe((response:any) => {
console.log(response);
});
}

14、路由的使用,app-routinh.module.ts中定义

//根模块需要导入路由
//路由模块需要导入已经创建的组件
const routes: Routes = [
{path: 'home', component: HomeComponent},
{path: 'news', component: NewsComponent},
{path: 'todoList', component: TodoListComponent},
//默认挂载的组件
{path: '**', redirectTo: 'home'}
]; 页面路由跳转1:
//跳转到newscontent页面,并且把index传过去
<li *ngFor="let item of list; let key = index">
<a [routerLink]="[ '/newscontent' ]" [queryParams]="{index:key}" >{{key}}---{{item}}</a>
</li>
//跳转后对应的url:http://localhost:4200/newscontent?index=4 //获取路由传值
//如果要获取传递过去的参数,要引入ActivatedRoute
import { ActivatedRoute } from '@angular/router';
constructor(public activeRoute:ActivatedRoute) { }//声名ActivatedRoute
ngOnInit() {
//获取路由传递过来的值
this.activeRoute.queryParams.subscribe(data => {
if(data.index){
console.log('路由传值index : ' + data.index);
}
});
}
//页面路由跳转2:动态路由
//配置:
const routes: Routes = [
{path: 'newscontent/:index', component: NewscontentComponent},
//默认挂载的组件
{path: '**', redirectTo: 'home'}
]; <ul>
<li *ngFor="let item of list; let key = index">
<a [routerLink]="[ '/newscontent/', key]">{{key}}---{{item}}</a>
</li>
</ul> //获取动态路由传值,同样需要引入ActivatedRoute
this.activeRoute.params.subscribe(date => {
console.log(date);
}); //js动态路由跳转

学习-angular 7入门的更多相关文章

  1. Angular.js 入门(一)

    最近在学习angular.js,为此方便加深对angular.js前端框架的理解,因此写下这篇angular.js入门 首先介绍下什么是angular.js? AngularJS 是一个 JavaSc ...

  2. Angular 从入坑到挖坑 - Angular 使用入门

    一.Overview angular 入坑记录的笔记第一篇,完成开发环境的搭建,以及如何通过 angular cli 来创建第一个 angular 应用.入坑一个多星期,通过学习官方文档以及手摸手的按 ...

  3. 从零开始学习jQuery (一) 入门篇

    本系列文章导航 从零开始学习jQuery (一) 入门篇 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些 ...

  4. 学习angular 指令构造器时遇到的小问题

    在学习angular时,使用模块来为应用添加自己的指令时,遇到了一个问题,演示的代码如下: <!DOCTYPE html> <html> <head> <me ...

  5. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  6. WebSocket学习笔记——无痛入门

    WebSocket学习笔记——无痛入门 标签: websocket 2014-04-09 22:05 4987人阅读 评论(1) 收藏 举报  分类: 物联网学习笔记(37)  版权声明:本文为博主原 ...

  7. 腾讯QQ会员技术团队:人人都可以做深度学习应用:入门篇(下)

    四.经典入门demo:识别手写数字(MNIST) 常规的编程入门有"Hello world"程序,而深度学习的入门程序则是MNIST,一个识别28*28像素的图片中的手写数字的程序 ...

  8. Xmpp学习之Android-smack入门指导

    Xmpp学习之Android-smack入门指导 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/69404 ...

  9. Java编程学习知识点分享 入门必看

    Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...

随机推荐

  1. 在Ubuntu18.04.2LTS上遇到的问题汇总

    在Ubuntu18.04.2LTS上遇到的问题汇总 一.前言   在新版的Ubuntu上在桌面右键没有新建文档的按钮着实让人难以接受,其实只要稍微理解就能明白设计者的良苦用心,因为这样便于扩展性和自定 ...

  2. ubuntu / zsh shell / oh-my-zsh / 常用插件

    记录一下 zsh 的下载与配置,省得每次重装系统都要上网到处查. 安装 zsh shell sudo apt install zsh 切换 shell chsh -s /bin/zsh 安装 oh-m ...

  3. 绿联Type-C千兆网卡AX88179芯片驱动(苹果Mac OSX系统)CM141丨CM179

    绿联Type-C千兆网卡AX88179芯片驱动(苹果Mac OSX系统)CM141丨CM179 下载地址:https://www.lulian.cn/download/6-cn.html AX8817 ...

  4. STM32移植ROS--发布超声波信息

    前言:之前ROS跟单片机的底层通讯主要是通过串口自定的协议来做,比如官网提供的arduino串口驱动一样,需要ROS往下发一个指令,单片机再回传一个指令,要写一大堆的协议,这样很麻烦,效率也比较低, ...

  5. 微信小程序跳转页面时参数过长导致参数丢失

    问题描述: 微信小程序:跳转页面时传参,参数过长导致参数丢失 跳转到文章详情页时,使用的文章链接e.currentTarget.dataset.id过长导致参数丢失 handleClickArticl ...

  6. Shell基本运算符之算术、关系运算符

    Shell 运算符 =============================摘自菜鸟教程================================= Shell和其他编程语言一样,支持多种运算 ...

  7. 阿里云CentOS7.x安装nodejs及pm2

    对之前文章的修订 您将了解 CentOS下如何安装nodejs CentOS下如何安装NVM CentOS下如何安装git CentOS下如何安装pm2 适用对象 本文档介绍如何在阿里云CentOS系 ...

  8. Linux iSCSI 磁盘共享管理

    Linux iSCSI 磁盘共享管理 iSCSI 服务是通过服务端(target)与客户端(initiator)的形式来提供服务.iSCSI 服务端用于存放存储源的服务器,将磁盘空间共享给客户使用,客 ...

  9. LeetCode 1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold

    题目 我是按照边进行二分的 class Solution { public: int sum[100005]; int a[305][305]; int maxSideLength(vector< ...

  10. 百度站长平台HTTPS认证所遇到的坑

    坑1: 百度站长平台https认证失败,提示:请确保您网站的所有链接均支持https访问,且未使用不安全协议(如:SSL2.SSL3等协议). 解决办法: 1.  友情链接检查, 要检查所有的友情链接 ...