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槽结构形式ÿ…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...