当前位置: 首页 > 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中的使用
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • C++类的相互关联
  • chrome扩展demo1-小时钟
  • Idea+maven+scala构建包并在spark on yarn 运行
  • java取消线程实例
  • mockjs让前端开发独立于后端
  • spring boot 整合mybatis 无法输出sql的问题
  • SQLServer之索引简介
  • vue.js框架原理浅析
  • windows下使用nginx调试简介
  • 给新手的新浪微博 SDK 集成教程【一】
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 记一次用 NodeJs 实现模拟登录的思路
  • 技术发展面试
  • 数据可视化之 Sankey 桑基图的实现
  • puppet连载22:define用法
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (1)bark-ml
  • (30)数组元素和与数字和的绝对差
  • (8)STL算法之替换
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Java数据结构)ArrayList
  • (ZT)薛涌:谈贫说富
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (强烈推荐)移动端音视频从零到上手(上)
  • (十五)使用Nexus创建Maven私服
  • (算法二)滑动窗口
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • 、写入Shellcode到注册表上线
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .Net MVC4 上传大文件,并保存表单
  • .net 中viewstate的原理和使用
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually