angular7.0用法

一 app.modlue.ts的各个参数
@NgModule declarations配置当前项目运行的组件
imports 配置当前模块运行依赖的其他模块
providers 配置项目所需的服务
bootstrap 根组件

二 创建组件
1 ng g component component/header
2 使用的时候直接 <app-header></app-header>
3 运行项目 ng serve --open

三 引入图片
1 本地图片<img src="assets/images/01.png">
2 网络图片public img='http://' <img [src]="img">

四 遍历
定义一个数组
public list:any[]=[]

<li *ngFor="let item of list;let i=index">   

五 条件判断
1.*ngIf

<li *ngIf="key==1" class="red">            

2 ngSwitch

<ul [ngSwitch]='score'>
   <li *ngSwitchCase="1">    情况项
   <li *ngSwitchDefault>   默认值

六 ngClass ngStyle 用法
1 [ngClass]="{‘red’:true,‘blue’:false}"
2 [ngStyle]="{‘color’:‘red’}" red 固定值 添加“” 后台传递过来的变量 不加“”

七 管道
1 uppercase/lowercase
2 获取时间 public datatime = new Date()

 {{datatime|date:"yyyy-MM-DD HH-mm ss"}}
注 :如果绑定之后页面显示[Object,Object]  解决方法 使用:
{{info|json}}

八 事件

<button (click)="run($event)">    如果是input的话   可以获取到写入的值   e.target.value             e.target 获取dom对象
<input (keydown/keyup)="key($event)">

九 双向数据绑定
1 app.module.ts中 引入 import {FromModule} from '@angular/forms'
2 声明 imports:[FromModule]
3 使用 [(ngModel)]=“words”
或者使用js

<imput id="name">
let name = document.getElementById('name')
name.value   输入的值

10 Form表单类
radio
如果点击字的时 input 也能选中 <input id="sex1"><label for="sex1">id 与for 对应

select 双向绑定的话 <select [(ngModel)]="">

checkbox 双向绑定 以及 点击字时选 id与for 对应

<input [id]="'check'+key" [(ngModel)]="item.check"  (change)=""><label [for]="'check'+key">

angular7的一个标签上无法使用多个指令
也可通过[hidden] 来显示隐藏或*ngIf

十 service服务使用
storage 用法
1 创建服务 ng g service service/storage
2跟模块中引用并配置import {StorageService}from "../service/storage.service"
3 providers:[StorageService]
4 在哪使用在哪引用
5 初始化 A var storage=new StorageService() 不推荐使用
B constructor(public storage:StorageService){ this.storage.get() }
6 使用 this.storage.get()
storage服务

set(key:string,value:any){
   localstorage.setItem(key,JSON.stringify(value))
}
get(key){
   return JSON.parse(localstorage.getItem(key))
}
remove(key){
   localstorage.removeItem(key)
}

十一 操作DOM的方法
1 原生JS

let box:any = document.getElementById('box')
box.style.color='red' 
必须是视图加载完成之后      获取DOM            

2 ViewChild方法

1 起名字   #myBox
2 引入   import {ViewChild} from "@angluar/core"
3 写在类里面 @ViewChild('myBox') myBox1:any;     获取DOM节点赋值给任意类型的myBox1
4 this.myBox1.nativeElement   才是原生节点    
   this.myBox1.nativeElement.style.color="red"

ViewChild不仅可以获取DOM节点 也可以调用子组件
通过ViewChild调用子组件
1 在父组件中引入子组件 <app-header><app-header>
2 给子组件起名字 <app-header #headers><app-header>
3 @ViewChild(‘headers’) header:any; 在父组件中获取子组件实例 赋值给任意类型的header
4 调用子组件的方法 this.header.run()

十二 父组件给子组件传值 @Input
A 子组件获取父组件传递的数据
1 父组件定义数据
2 调用子组件时定义属性 <子组件 [title]=“title”>
3 子组件接收 引入Input装饰器 import {Input} from “@angluar/core”
4 @input() title:any; {{title}} 接受父组件传递的数据 要与子组件定义的属性一致
B在子组件执行父组件的方法
1 父组件定义方法
2 在子组件中定义函数 (click)=“geteDate()”
3 子组件中执行父组件的函数方法 @Input() run:any; this.run()
4 <子组件 [run]=“run”>
C 把父组件的数据全部传递给子组件
1<子组件 [home]=“this”> this表示当前实例
2 子组件中 @Input() home:any;
this.home.run()/msg等;

十三 在父组件中执行子组件的方法和数据 @ViewChild
1 在子组件中定义数据和方法
2 在父组件中获取子组件的数据和方法
<子组件 #footer>
import {ViewChild} from “@angular/core”
@ViewChild(‘footer’) footer:any;
this.footer.mes 数据 this.footer.run() 方法

十四 RXJS
Rxjs是异步数据流 来自微软 比promiss更强大
常见的异步编程方法
1 回调函数
2 事件监听/发布订阅
3 promiss
4 Rsjx
为了使用公共的IP 可以封装函数
1 通过promiss封装

run(api){
  retun new Promiss((resove,reject)=>{
    this.http.get(api).subscribe((responce)=>{
       resove(responce)
})
})
}
this.run(api).then(()=>{})

十五 请求
A get
1 引入 HttpClientModule
import {HttpClientModule} from “@angular/common/http”
imports:[HttpClientModule]
2 在请求的地方使用
import {HttpClient} from “@angular/common/http”
public http:HttpClient
this.http.get(api).subscribe((r:any)=>{
参数定义类型之后才能’.‘调用
})
B post
1 引入 HttpClientModule
import {HttpClientModule} from “@angular/common/http”
imports:[HttpClientModule]
2 在请求的地方使用
import {HttpClient,HttpHeaders} from “@angular/common/http”
public http:HttpClient
定义请求类型
const header = {headers:new HttpHeaders({“Content-Type”:‘application/json’})}
this.http.post(api,{‘username’:‘123’},headers).subscribe((r:any)=>{
参数定义类型之后才能’.‘调用
})
C jsonp 跨域的一种解决方案
1 引入 import {HttpClientModule,HttpClientJsonpModule} from “@angular/common/http”
2 import {HttpClient} from “@angular/common/http”
public http:HttpClient
this.http.jsonp(api,’‘callback’’).subscribe()
this.http.jsonp(api,’‘cb’’).subscribe()
3 jsonp请求 服务器必须支持jsonp 验证方式 ?callback=sss 或 ?cb=sss

十六 路由
1 创建项目的时候安装路由
2 具体路由
const routes:Routes=[
{path:‘home’,component:HomeComponent},
{path:’**’,redirectTo:‘home’} ** 表示任意路由 如果找不到直接跳转
]
3 <a [routerLink]="[’/home’]"> || < a routerLink=’/home’>
4 < a routerLink=’/home’ routerLinkActive=“active”> 选中状态
路由跳转传值
A get传值 api?aid=id
1 < a routerLink="[’/home’]" [queryParams]="{aid:id,key:1}">
2 获取get 传值 import {ActivatedRoute} from “@angular/router”
public route:ActivatedRoute
this.route.queryParams.subscribe({})
B 动态传值 api/id
1 配置路由
{path:‘news/:aid’,component:NewsContent}
2 跳转设置
< a routerLink="[’/home’,key]" routerLinkActive=“active”>
3 获取动态路由值
import {ActivatedRoute} from “@angular/router”
this.router.params.subscribe()
在js中实现页面跳转
A 动态页面跳转
1 配置路由
2 引入 import {Router} from “@angular/router”
public router:Router
3 跳转 this.router.navigate([’/路由’,‘1234’])
this.router.navigate([’/路由’])
B get 路由js跳转
1 引入 import {Router,NavigationExtras} from “@angular/router”
2 定义对象 let queryParams:NavigationExtras = {
queryParams:{aid:123}
}
this.router.navigate([’/news’],queryParams)

十七 配置子路由得方法
{path:‘home’,component:HomeComponent,Children:[
{path:‘homes’,component:HomesComponent]
]}
< a [routerLink]="[’/home/homes’]">
在父组件中显示子组件
< router-outlet >

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值