深入了解Angular中的路由,如何快速上手?
时间:2021-09-30
来源:互联网
标签:
今天PHP爱好者为您带来本篇文章带大家深入了解一下Angular中的路由,看看快速上手的方法,介绍一下匹配规则、路由传参、路由嵌套、路由守卫等,希望对大家有所帮助!希望对大家有所帮助。
import { Injectable } from "@angular/core"
import { CanActivateChild, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from "@angular/router"
import { Observable } from "rxjs"
@Injectable({
providedIn: "root"
})
export class AdminGuard implements CanActivateChild {
canActivateChild(): boolean | UrlTree {
return true
}
}
{
path: "about",
component: AboutComponent,
canActivateChild: [AdminGuard],
children: [
{
path: "introduce",
component: IntroduceComponent
}
]
}
3、CanDeactivate
检查用户是否可以退出路由。比如用户在表单中输入的内容没有保存,用户又要离开路由,此时可以调用该守卫提示用户
import { Injectable } from "@angular/core"
import {
CanDeactivate,
ActivatedRouteSnapshot,
RouterStateSnapshot,
UrlTree
} from "@angular/router"
import { Observable } from "rxjs"
export interface CanComponentLeave {
canLeave: () => boolean
}
@Injectable({
providedIn: "root"
})
export class UnsaveGuard implements CanDeactivate<CanComponentLeave> {
canDeactivate(component: CanComponentLeave): boolean {
if (component.canLeave()) {
return true
}
return false
}
}
{
path: "",
component: HomeComponent,
canDeactivate: [UnsaveGuard]
}
import { CanComponentLeave } from "src/app/guards/unsave.guard"
export class HomeComponent implements CanComponentLeave {
myForm: FormGroup = new FormGroup({
username: new FormControl()
})
canLeave(): boolean {
if (this.myForm.dirty) {
if (window.confirm("有数据未保存, 确定要离开吗")) {
return true
} else {
return false
}
}
return true
}
4、Resolve
允许在进入路由之前先获取数据,待数据获取完成之后再进入路由
$ ng g resolver <name>
import { Injectable } from "@angular/core"
import { Resolve } from "@angular/router"
type returnType = Promise<{ name: string }>
@Injectable({
providedIn: "root"
})
export class ResolveGuard implements Resolve<returnType> {
resolve(): returnType {
return new Promise(function (resolve) {
setTimeout(() => {
resolve({ name: "张三" })
}, 2000)
})
}
}
{
path: "",
component: HomeComponent,
resolve: {
user: ResolveGuard
}
}
export class HomeComponent {
constructor(private route: ActivatedRoute) {}
ngOnInit(): void {
console.log(this.route.snapshot.data.user)
}
}
以上就是深入了解Angular中的路由,如何快速上手?的详细内容,更多请关注php爱好者其它相关文章!
-
电脑出现normal.dotm错误怎么办?解决方法是什么? 时间:2025-12-15 -
normal.dotm在哪个文件夹里 如何删除normal模板 时间:2025-12-15 -
d3dll.dll不能启动怎么办?怎么修复? 时间:2025-12-15 -
psrpc.dll缺失的原因及解决方法 时间:2025-12-15 -
JavaScript插件Lightbox.js用法详解 时间:2025-12-15 -
isalpha()函数在Python中的用法详解 时间:2025-12-15
今日更新
-
poipiku官网最新入口链接2026-poipiku官方网站怎么进入
阅读:18
-
poki免费游戏畅玩入口-poki免费游戏免登录一键即玩入口
阅读:18
-
皮皮猪的梗是什么梗 揭秘网络爆笑神梗的由来和用法
阅读:18
-
5大保险计划策略 全面守护你的资产安全
阅读:18
-
51黑料最新地址-51黑料网每日吃瓜首页最新发布
阅读:18
-
哔咔漫画最新官网入口-官方正版直连网址
阅读:18
-
抖音充值怎么操作-抖音充值入口在哪里
阅读:18
-
欧易资产划转功能详解:操作指南与常见问题解答
阅读:18
-
poki小游戏在线玩无需下载安装-poki正版官网最新版本
阅读:18
-
poki游戏网站在线畅玩入口-poki游戏网站在线即玩免注册入口
阅读:18










