当前位置: 首页 > news >正文

[Angular] 笔记 18:Angular Router

Angular Router 视频

chatgpt:
Angular 具有内置的大量工具、功能和库,功能强大且经过良好设计,如组件化架构、依赖注入、模块化系统、路由和HTTP客户端等。这些功能可以直接用于项目中,无需额外的设置或第三方库。这简化了开发流程,因为不必从头编写或集成许多常见的功能,而是可以利用Angular提供的工具快速启动和构建应用程序。

也就是说,Angular 是一种自带电池(Batteries Included)的框架,web 开发所需要的一切应用尽有,Router 是其中之一。

当创建Angular app时,使用命令 ng new <app-name>, Angular 接着会问要不要 Routing 功能 ? 选择 yes, 生成的 app 就会带有 routing 模块:

在这里插入图片描述

1. 注册 routes

app-routing.module.ts:

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';// 这里注册两个 route:homepage route 和 通配符 route
const routes: Routes = [{ path: '', component: HomeComponent, pathMatch: 'full' },{ path: '**', component: NotfoundComponent },
];@NgModule({imports: [RouterModule.forRoot(routes)],exports: [RouterModule],
})
export class AppRoutingModule {}

2. 生成与所注册的 routes 对应的两个组件

在这里插入图片描述

一个组件名称为 notfound, 另一个为 home.

奇怪的是上述视频中的方法不起作用,没法生成组件,使用 ng-cli 命令:

PS D:\Angular\my-app> ng generate component home --module=app.module.ts    
CREATE src/app/home/home.component.html (19 bytes)
CREATE src/app/home/home.component.spec.ts (585 bytes)
CREATE src/app/home/home.component.ts (267 bytes)
CREATE src/app/home/home.component.css (0 bytes)
UPDATE src/app/app.module.ts (727 bytes)
PS D:\Angular\my-app> ng generate component notfound --module=app.module.ts
CREATE src/app/notfound/notfound.component.html (23 bytes)
CREATE src/app/notfound/notfound.component.spec.ts (613 bytes)
CREATE src/app/notfound/notfound.component.ts (283 bytes)
CREATE src/app/notfound/notfound.component.css (0 bytes)
UPDATE src/app/app.module.ts (813 bytes)
PS D:\Angular\Angular Tutorial For Beginners 2022\my-app> 

在这里插入图片描述

3. 核对 index.html 内容

此文件中必须有:<base href="/"> 以及 <app-root></app-root>, 缺一不可,否则 routing 部分就不起作用。

<!doctype html>
<html lang="en">
<head><meta charset="utf-8"><title>MyApp</title><base href="/"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body><app-root></app-root>
</body>
</html>

4. 连结 router 链接

app.component.html

<router-outlet></router-outlet>
<div><a routerLink="/"></a>
</div>

缺少了 router-outlet, routing 也会不起作用

5. Navbar interface

app.component.ts:

import { Component } from '@angular/core';
import { FormsModule } from '@angular/forms';// navbar interface
interface Nav {link: string;name: string;exact: boolean;
}@Component({selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.css'],
})
export class AppComponent {constructor() {}
}

6. 修改 app.component.html

将其中的 <a> 改成使用 for loop:

<router-outlet></router-outlet>
<div><a*ngFor="let item of nav"[routerLink]="item.link"routerLinkActive="active"[routerLinkActiveOptions]="{ exact: item.exact }">{{ item.name }}</a>
</div>

routerLinkActive 用于设置当前链接是否为 active,即所在页面是否与当前链接对应。

同时设置 app.component.css,设置 active 链接的背景色为红色:

.cool-bool {background: #0094ff;
}.active {background-color: red;
}

7. 运行 ng serve:

在这里插入图片描述

相关文章:

  • 小型内衣洗衣机什么牌子好?口碑好的小型洗衣机
  • IP地址的四大类型:动态IP、固定IP、实体IP、虚拟IP的区别与应用
  • 【六袆 - Framework】vue3入门;vue框架的特点矩阵列举;Vue.js 工作原理
  • 摸鱼摸出来的vue3+element-plus毒蘑菇后台管理:新标签页的实现。
  • GLTF编辑器-位移贴图实现破碎的路面
  • GaussDB数据库中的同义词SYNONYM
  • 《深入理解JAVA虚拟机笔记》类加载机制
  • leetcode151. 反转字符串中的单词
  • 基于yolov2深度学习网络的血细胞检测算法matlab仿真
  • Python+Yolov5+Qt交通标志特征识别窗体界面相片视频摄像头
  • 【自然语言处理】类似GPT的模型
  • 深度学习框架:Tensorflow和pytorch、PaddlePaddle比较
  • C语言实例_stdlib.h库函数功能及其用法详解
  • vue3项目使用pako库解压后端返回zip数据
  • Tailwind CSS 在Html中的使用
  • [译]CSS 居中(Center)方法大合集
  • C# 免费离线人脸识别 2.0 Demo
  • CSS中外联样式表代表的含义
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Java到底能干嘛?
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • js学习笔记
  • Laravel核心解读--Facades
  • leetcode388. Longest Absolute File Path
  • mysql外键的使用
  • oschina
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 从输入URL到页面加载发生了什么
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 开源地图数据可视化库——mapnik
  • 学习JavaScript数据结构与算法 — 树
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • (1)Nginx简介和安装教程
  • (3)nginx 配置(nginx.conf)
  • (31)对象的克隆
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • .net 7 上传文件踩坑
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net framework4与其client profile版本的区别
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET上SQLite的连接
  • .NET委托:一个关于C#的睡前故事
  • @Not - Empty-Null-Blank
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [20150629]简单的加密连接.txt
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [CISCN 2023 初赛]go_session
  • [daily][archlinux][game] 几个linux下还不错的游戏
  • [Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb