Angular 组件介绍及使用(一)
Angular 概述
Angular 是一个用于构建 Web 应用程序的开源前端框架,由 Google 团队开发和维护。它采用 TypeScript 编程语言,并借鉴了一些传统的 Web 开发模式和最佳实践,提供了强大而灵活的工具和特性。
以下是 Angular 的一些概述要点:
-
组件化架构:Angular 以组件为核心,通过组件构建可重用、模块化的用户界面。每个组件由模板、样式和组件类组成,并且具有独立的功能和数据。
-
声明式模板:Angular 的模板语法基于 HTML,并且支持插值绑定、指令、管道等特性。这使得开发者可以以声明式方式定义和操作应用程序的视图。
-
双向数据绑定:Angular 的双向数据绑定机制可以实时更新模型和视图之间的数据变化。当模型发生变化时,视图会自动更新;反之亦然。
-
依赖注入:Angular 内置了强大的依赖注入机制,它可以帮助开发者解耦和管理组件之间的依赖关系。通过注入器(Injector),开发者可以轻松地创建和使用服务、组件和其他依赖项。
-
强大的工具集:Angular 提供了一整套工具和特性,用于帮助开发者提高生产效率和开发质量。其中包括自动化的测试工具、静态类型检查、命令行工具(Angular CLI)等。
-
跨平台开发:Angular 不仅可以用于构建 Web 应用程序,还可以用于构建移动应用程序和桌面应用程序。通过框架如 Ionic 和 Electron,开发者可以使用 Angular 来构建跨平台的应用程序。
-
社区支持和生态系统:Angular 拥有庞大的开发者社区和丰富的生态系统。开发者可以通过官方文档、教程、博客和论坛等资源获取支持,并分享自己的经验和知识。
Angular 与 VUE的区别
Angular 和 Vue 都是现代的前端框架,用于开发 Web 应用程序。
Angular 是由 Google 开发和维护的框架,采用 TypeScript 语言编写。它拥有完整的开发体系,能够提供强大的功能和高度可扩展性,适用于大型企业级应用和复杂的单页应用程序。Angular 的学习曲线相对较陡,需要掌握一定的 TypeScript 知识和 Angular 的核心概念。
Vue 是一个由尤雨溪开发和维护的轻量级框架,采用 JavaScript 编写。它拥有创新的响应式数据绑定和易于使用的 API,能够快速构建小型到中型的 Web 应用程序。Vue 具有比较平缓的学习曲线,不需要过多的配置和学习成本。
Angular 组件是 Angular 框架中的核心概念之一,用于构建用户界面。每个 Angular 组件由模板、样式和逻辑组成,它们一起工作以创建可重用的、模块化的用户界面。
Angular 搭建项目
-
创建 Angular 项目:
首先,你需要安装 Angular CLI(命令行界面),它是一个用于创建和管理 Angular 项目的工具集。打开终端(命令行界面),运行以下命令安装 Angular CLI:npm install -g @angular/cli创建一个新的 Angular 项目:
ng new my-app注意,
my-app是你项目的名称,可以根据你实际的需求进行修改。 -
进入项目目录:
在终端中,通过以下命令进入刚刚创建的项目目录:cd my-app -
安装依赖:
在项目目录下,运行以下命令安装项目所需要的依赖:npm install此命令将自动从
package.json文件中读取项目依赖,并进行安装。 -
导入
@angular/core模块:
在你的 TypeScript 文件中,使用import关键字导入@angular/core模块。例如:import { Component } from '@angular/core';这样就可以在文件中使用
@angular/core模块中的组件、指令等功能了。 -
创建 Angular 组件:
在你的项目中创建一个组件,可以使用 Angular CLI 提供的快捷命令ng generate component,它会自动生成组件所需的文件。例如,运行以下命令生成一个名为my-component的组件:ng generate component my-component这会自动生成
my-component组件所需的组件类、HTML 模板、CSS 样式等文件,并自动在适当的位置将组件注册到相关模块中。如果你手动创建组件,请确保在组件类上添加合适的装饰器,并将组件类导出。例如:
import { Component } from '@angular/core';@Component({selector: 'app-my-component',templateUrl: './my-component.component.html',styleUrls: ['./my-component.component.css'] })export class MyComponentComponent {// 组件逻辑 } -
在模块中引入组件:
在相关模块中(通常是根模块或其他特定功能模块),将组件导入,并将其添加到declarations数组中。例如,在根模块中(app.module.ts):import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser';import { AppComponent } from './app.component'; import { MyComponentComponent } from './my-component/my-component.component'; // 导入组件@NgModule({declarations: [AppComponent,MyComponentComponent // 将组件添加到 declarations 数组],imports: [BrowserModule],providers: [],bootstrap: [AppComponent] }) export class AppModule { }通过将组件添加到
declarations数组,Angular 知道它在应用程序中注册了这个组件,并可以在相关模板中使用它。 -
启动应用程序:
使用以下命令启动 Angular 项目:ng serve它会启动开发服务器,并在浏览器中运行你的应用程序。通过访问
http://localhost:4200,你将能够看到你的应用程序在浏览器中运行。
Angular组件介绍
组件类 (Component Class)
用于定义组件的行为和属性。它通常使用装饰器 @Component 来进行装饰,并包含与组件相关的逻辑和数据。
import { Component } from '@angular/core';@Component({selector: 'app-example',template: `<h1>Hello Angular!</h1><p>{{ message }}</p>`,styleUrls: ['./example.component.css']
})
export class ExampleComponent {message = 'Welcome to Angular!';
}
模板 (Template)
定义了组件的 HTML 结构和布局,用于描述如何渲染组件的视图。使用 Angular 的模板语法进行插值绑定、指令和其他逻辑操作。
<h1>Hello Angular!</h1>
<p>{{ message }}</p>
样式 (Style):用于定义组件的外观和样式,可以是内联样式、内部样式或外部样式文件。
h1 {color: blue;
}p {font-size: 14px;
}
元数据装饰器 (Metadata Decorator)
使用装饰器来修饰组件类,并提供一些元数据信息。常用的装饰器包括 @Component、@Input、@Output 等,它们用于配置组件的各个方面,如选择器、模板、样式等。
import { Component, Input } from '@angular/core';@Component({selector: 'app-example',template: '<h1>Hello Angular!</h1>',
})
export class ExampleComponent {@Input() name: string;// ...
}
输入属性 (Input Property)
用于将父组件的数据传递给子组件。通过 @Input 装饰器来定义输入属性,并通过组件的标签属性进行传递。
<app-example [name]="userName"></app-example>
输出属性 (Output Property):用于从子组件向父组件发送消息或数据。通过 @Output 装饰器和 EventEmitter 来定义输出属性,并通过事件绑定来响应子组件的行为。
import { Component, Output, EventEmitter } from '@angular/core';@Component({selector: 'app-example',template: '<button (click)="onButtonClick()">Click Me</button>',
})
export class ExampleComponent {@Output() buttonClick = new EventEmitter();onButtonClick() {this.buttonClick.emit();}
}
Angular 简单组件示例代码
组件是 Angular 应用程序的基本构建块,负责呈现用户界面和处理用户交互。在示例代码中,我们定义了一个名为 AppComponent 的组件。
import { Component } from '@angular/core';@Component({selector: 'app-root',template: `<h1>{{ title }}</h1><button (click)="changeTitle()">Change Title</button>`,styleUrls: ['./app.component.css']
})
export class AppComponent {title = 'My Angular App';changeTitle(): void {this.title = 'New Title';}
}
在上述代码中,@Component 装饰器用于给组件类 AppComponent 添加元数据。selector 字段指定了组件的选择器,这决定了如何在 HTML 中引用这个组件。在这个示例中,选择器为 app-root,表示我们可以在 HTML 中使用 <app-root></app-root> 标签来渲染这个组件。
template 字段指定了组件的模板,它使用了 Angular 的模板语法。在模板中,我们使用双花括号 {{ }} 进行插值绑定,将组件的 title 属性显示在 <h1> 标题元素中。我们还在模板中放置了一个按钮,当点击按钮时会调用组件中的 changeTitle() 方法。
styleUrls 字段是一个指向样式文件的路径数组,用于为组件应用样式。在这个示例中,我们将样式文件 app.component.css 与组件关联起来。
AppComponent 类是组件的实际实现。在这个类中,我们定义了一个名为 title 的属性,并初始化为 'My Angular App'。changeTitle() 方法用于在按钮点击时更改 title 的值,将其设置为 'New Title'。
接下来,我们需要创建一个根组件,并将其添加到应用程序中。
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { NgModule, Component } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';@NgModule({imports: [BrowserModule],declarations: [AppComponent],bootstrap: [AppComponent]
})
export class AppModule { }platformBrowserDynamic().bootstrapModule(AppModule);
在上述代码中,我们首先引入了一些必要的模块和组件。然后,我们创建了一个名为 AppModule 的根模块,并使用 @NgModule 装饰器来定义该模块。
imports 数组中导入了 BrowserModule 模块,该模块提供了运行在浏览器中的应用程序所需的一些关键功能。
declarations 数组中声明了根组件 AppComponent。
在 bootstrap 数组中,我们指定了根组件 AppComponent,意味着该组件将作为应用程序的入口点。
最后,我们使用 platformBrowserDynamic().bootstrapModule(AppModule); 来启动应用程序,将根模块 AppModule 作为参数传递给 bootstrapModule 函数。
刚刚接触Angular,总结理论知识和简单例子,希望能帮助后来学习Angular的人。
大鹏一日同风起 扶摇直上九万里
诸位加油
END
相关文章:
Angular 组件介绍及使用(一)
Angular 概述 Angular 是一个用于构建 Web 应用程序的开源前端框架,由 Google 团队开发和维护。它采用 TypeScript 编程语言,并借鉴了一些传统的 Web 开发模式和最佳实践,提供了强大而灵活的工具和特性。 以下是 Angular 的一些概述要点&am…...
2023.11.13 hive数据仓库之分区表与分桶表操作,与复杂类型的运用
目录 0.hadoop hive的文档 1.一级分区表 2.一级分区表练习2 3.创建多级分区表 4.分区表操作 5.分桶表 6. 分桶表进行排序 7.分桶的原理 8.hive的复杂类型 9.array类型: 又叫数组类型,存储同类型的单数据的集合 10.struct类型: 又叫结构类型,可以存储不同类型单数据的集合…...
Spring Cloud学习(七)【Docker 容器】
文章目录 初识 DockerDocker 介绍Docker与虚拟机Docker架构安装 Docker Docker 基本操作镜像相关命令容器相关命令数据卷 Dockerfile 自定义镜像镜像结构Dockerfile DockerComposeDockerCompose介绍安装DockerCompose Docker镜像仓库常见镜像仓库服务私有镜像仓库 初识 Docker …...
好题分享(2023.11.5——2023.11.11)
目录 前情回顾: 前言: 题目一:补充《移除链表元素》 题目二:《反转链表》 解法一:三指针法 解法二:头插法 题目三: 《相交链表》 题目四:《合并两个有序数列》 题目五&…...
第二章 03Java基础-IDEA相关叙述
文章目录 前言一、IDEA概述二、IDEA下载和安装三、IDEA项目结构介绍四、IDEA的项目和模块操作总结前言 今天我们学习Java基础,IDEA下载以及相关配置和基础使用方法 一、IDEA概述 1.IDEA全称IntelliJ IDEA,是用于Java语言开发的集成工具,是业界公认的目前用于Java程序开发最…...
第三阶段第二章——Python高阶技巧
时间过得很快,这么快就来到了最后一篇Python基础的学习了。话不多说直接进入这最后的学习环节吧!!! 期待有一天 春风得意马蹄疾,一日看尽长安花 o(* ̄︶ ̄*)o 1.闭包 什么是闭包? 答…...
【Git】Git分支与应用分支Git标签与应用标签
一,Git分支 1.1 理解Git分支 在 Git 中,分支是指一个独立的代码线,并且可以在这个分支上添加、修改和删除文件,同时作为另一个独立的代码线存在。一个仓库可以有多个分支,不同的分支可以独立开发不同的功能࿰…...
本地PHP搭建简单Imagewheel私人云图床,在外远程访问——“cpolar内网穿透”
文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测…...
HCIP---OSPF思维导图
...
Python实现猎人猎物优化算法(HPO)优化XGBoost回归模型(XGBRegressor算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…...
pandas读写json的知识点
pandas对象可以直接转换为json,使用to_json即可。里面的orient参数很重要,可选值为columns,index,records,values,split,table A B C x 1 4 7 y 2 5 8 z 3 6 9 In [236]: dfjo.to_json(orient"columns") Out[236]: {"A":{"x&qu…...
图论——Dijkstra算法matlab代码
Dijkstra算法步骤 (1)构造邻接矩阵 (2)定义起始点 (3)运行代码 M[ 0 5 9 Inf Inf Inf InfInf 0 Inf Inf 12 Inf InfInf 3 0 15 Inf 23 InfInf 6 …...
[MySQL] MySQL表的基础操作
文章目录 一、创建表 1、1 SQL语法 1、2 实例演示 二、查询表 三、修改表 3、1 修改表名字 3、2 新增列(字段) 3、3 修改列类型 3、4 修改列名 3、5 删除表 四、总结 🙋♂️ 作者:Ggggggtm 🙋♂️ 👀 专…...
SQL 部分解释。
这段SQL代码的主要作用是从V_order_L表中查询数据,并与V_AATB1DU_F52_M表进行左连接。查询的结果会按照订单时间(orderTime)、POS代码(posCode)和区间名称(f.DName)进行分组。 具体来说…...
利用LangChain实现RAG
检索增强生成(Retrieval-Augmented Generation, RAG)结合了搜寻检索生成能力和自然语言处理架构,透过这个架构,模型可以从外部知识库搜寻相关信息,然后使用这些信息来生成response。要完成检索增强生成主要包含四个步骤…...
零基础学习Matlab,适合入门级新手,了解Matlab
一、认识Matlab Matlab安装请参见博客 安装步骤 1.界面 2.清空环境变量及命令 (1)clear all :清除Workspace中的所有变量 (2)clc:清除Command Window中的所有命令 二、Matlab基础 1.变量命名规则 &a…...
CCF ChinaSoft 2023 论坛巡礼 | 自动驾驶仿真测试论坛
2023年CCF中国软件大会(CCF ChinaSoft 2023)由CCF主办,CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办,将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…...
vue封装useWatch hook支持停止监听和重启监听功能
import { watch, reactive } from vue;export function useWatch(source, cb, options) {const state reactive({stop: null});function start() {state.stop watch(source, cb, options);}function stop() {state.stop();state.stop null;}// 返回一个对象,包含…...
智能配方颗粒管理系统解决方案,专业实现中医药产业数字化-亿发
“中药配方颗粒”,又被称为免煎中药,源自传统中药饮片,经过提取、分离、浓缩、干燥、制粒、包装等工艺加工而成。这种新型配方药物完整保留了原中药饮片的所有特性。既能满足医师的辨证论治和随症加减需求,同时具备强劲好人高效的…...
PXI总线测试模块-6951E 信号分析仪
6951E 信号分析仪 频率范围:10Hz~26.5GHz 6951E信号分析仪率范围覆盖10Hz~26.5GHz、带宽40MHz,具备频谱分析、相邻信道功率测试、模拟解调、噪声系数测试等多种测量功能。 6951E信号分析仪采用PXIe总线3U 4槽结构形式ÿ…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
