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

Angular 组件介绍及使用(一)

Angular 概述

Angular 是一个用于构建 Web 应用程序的开源前端框架,由 Google 团队开发和维护。它采用 TypeScript 编程语言,并借鉴了一些传统的 Web 开发模式和最佳实践,提供了强大而灵活的工具和特性。

以下是 Angular 的一些概述要点:

  1. 组件化架构:Angular 以组件为核心,通过组件构建可重用、模块化的用户界面。每个组件由模板、样式和组件类组成,并且具有独立的功能和数据。

  2. 声明式模板:Angular 的模板语法基于 HTML,并且支持插值绑定、指令、管道等特性。这使得开发者可以以声明式方式定义和操作应用程序的视图。

  3. 双向数据绑定:Angular 的双向数据绑定机制可以实时更新模型和视图之间的数据变化。当模型发生变化时,视图会自动更新;反之亦然。

  4. 依赖注入:Angular 内置了强大的依赖注入机制,它可以帮助开发者解耦和管理组件之间的依赖关系。通过注入器(Injector),开发者可以轻松地创建和使用服务、组件和其他依赖项。

  5. 强大的工具集:Angular 提供了一整套工具和特性,用于帮助开发者提高生产效率和开发质量。其中包括自动化的测试工具、静态类型检查、命令行工具(Angular CLI)等。

  6. 跨平台开发:Angular 不仅可以用于构建 Web 应用程序,还可以用于构建移动应用程序和桌面应用程序。通过框架如 Ionic 和 Electron,开发者可以使用 Angular 来构建跨平台的应用程序。

  7. 社区支持和生态系统:Angular 拥有庞大的开发者社区和丰富的生态系统。开发者可以通过官方文档、教程、博客和论坛等资源获取支持,并分享自己的经验和知识。

Angular 与 VUE的区别

Angular 和 Vue 都是现代的前端框架,用于开发 Web 应用程序。

Angular 是由 Google 开发和维护的框架,采用 TypeScript 语言编写。它拥有完整的开发体系,能够提供强大的功能和高度可扩展性,适用于大型企业级应用和复杂的单页应用程序。Angular 的学习曲线相对较陡,需要掌握一定的 TypeScript 知识和 Angular 的核心概念。

Vue 是一个由尤雨溪开发和维护的轻量级框架,采用 JavaScript 编写。它拥有创新的响应式数据绑定和易于使用的 API,能够快速构建小型到中型的 Web 应用程序。Vue 具有比较平缓的学习曲线,不需要过多的配置和学习成本。

Angular 组件是 Angular 框架中的核心概念之一,用于构建用户界面。每个 Angular 组件由模板、样式和逻辑组成,它们一起工作以创建可重用的、模块化的用户界面。

Angular 搭建项目

  1. 创建 Angular 项目:
    首先,你需要安装 Angular CLI(命令行界面),它是一个用于创建和管理 Angular 项目的工具集。打开终端(命令行界面),运行以下命令安装 Angular CLI:

    npm install -g @angular/cli
    

    创建一个新的 Angular 项目:

    ng new my-app
    

    注意,my-app 是你项目的名称,可以根据你实际的需求进行修改。

  2. 进入项目目录:
    在终端中,通过以下命令进入刚刚创建的项目目录:

    cd my-app
    
  3. 安装依赖:
    在项目目录下,运行以下命令安装项目所需要的依赖:

    npm install
    

    此命令将自动从 package.json 文件中读取项目依赖,并进行安装。

  4. 导入 @angular/core 模块:
    在你的 TypeScript 文件中,使用 import 关键字导入 @angular/core 模块。例如:

    import { Component } from '@angular/core';
    

    这样就可以在文件中使用 @angular/core 模块中的组件、指令等功能了。

  5. 创建 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 {// 组件逻辑
    }
    
  6. 在模块中引入组件:
    在相关模块中(通常是根模块或其他特定功能模块),将组件导入,并将其添加到 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 知道它在应用程序中注册了这个组件,并可以在相关模板中使用它。

  7. 启动应用程序:
    使用以下命令启动 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 应用程序的开源前端框架&#xff0c;由 Google 团队开发和维护。它采用 TypeScript 编程语言&#xff0c;并借鉴了一些传统的 Web 开发模式和最佳实践&#xff0c;提供了强大而灵活的工具和特性。 以下是 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)

目录 前情回顾&#xff1a; 前言&#xff1a; 题目一&#xff1a;补充《移除链表元素》 题目二&#xff1a;《反转链表》 解法一&#xff1a;三指针法 解法二&#xff1a;头插法 题目三&#xff1a; 《相交链表》 题目四&#xff1a;《合并两个有序数列》 题目五&…...

第二章 03Java基础-IDEA相关叙述

文章目录 前言一、IDEA概述二、IDEA下载和安装三、IDEA项目结构介绍四、IDEA的项目和模块操作总结前言 今天我们学习Java基础,IDEA下载以及相关配置和基础使用方法 一、IDEA概述 1.IDEA全称IntelliJ IDEA,是用于Java语言开发的集成工具,是业界公认的目前用于Java程序开发最…...

第三阶段第二章——Python高阶技巧

时间过得很快&#xff0c;这么快就来到了最后一篇Python基础的学习了。话不多说直接进入这最后的学习环节吧&#xff01;&#xff01;&#xff01; 期待有一天 春风得意马蹄疾&#xff0c;一日看尽长安花 o(*&#xffe3;︶&#xffe3;*)o 1.闭包 什么是闭包&#xff1f; 答…...

【Git】Git分支与应用分支Git标签与应用标签

一&#xff0c;Git分支 1.1 理解Git分支 在 Git 中&#xff0c;分支是指一个独立的代码线&#xff0c;并且可以在这个分支上添加、修改和删除文件&#xff0c;同时作为另一个独立的代码线存在。一个仓库可以有多个分支&#xff0c;不同的分支可以独立开发不同的功能&#xff0…...

本地PHP搭建简单Imagewheel私人云图床,在外远程访问——“cpolar内网穿透”

文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…...

HCIP---OSPF思维导图

...

Python实现猎人猎物优化算法(HPO)优化XGBoost回归模型(XGBRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…...

pandas读写json的知识点

pandas对象可以直接转换为json&#xff0c;使用to_json即可。里面的orient参数很重要&#xff0c;可选值为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算法步骤 &#xff08;1&#xff09;构造邻接矩阵 &#xff08;2&#xff09;定义起始点 &#xff08;3&#xff09;运行代码 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 新增列&#xff08;字段&#xff09; 3、3 修改列类型 3、4 修改列名 3、5 删除表 四、总结 &#x1f64b;‍♂️ 作者&#xff1a;Ggggggtm &#x1f64b;‍♂️ &#x1f440; 专…...

SQL 部分解释。

这段SQL代码的主要作用是从V_order_L表中查询数据&#xff0c;并与V_AATB1DU_F52_M表进行左连接。查询的结果会按照订单时间&#xff08;orderTime&#xff09;、POS代码&#xff08;posCode&#xff09;和区间名称&#xff08;f.DName&#xff09;进行分组。 具体来说&#xf…...

利用LangChain实现RAG

检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;结合了搜寻检索生成能力和自然语言处理架构&#xff0c;透过这个架构&#xff0c;模型可以从外部知识库搜寻相关信息&#xff0c;然后使用这些信息来生成response。要完成检索增强生成主要包含四个步骤…...

零基础学习Matlab,适合入门级新手,了解Matlab

一、认识Matlab Matlab安装请参见博客 安装步骤 1.界面 2.清空环境变量及命令 &#xff08;1&#xff09;clear all &#xff1a;清除Workspace中的所有变量 &#xff08;2&#xff09;clc&#xff1a;清除Command Window中的所有命令 二、Matlab基础 1.变量命名规则 &a…...

CCF ChinaSoft 2023 论坛巡礼 | 自动驾驶仿真测试论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于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;}// 返回一个对象&#xff0c;包含…...

智能配方颗粒管理系统解决方案,专业实现中医药产业数字化-亿发

“中药配方颗粒”&#xff0c;又被称为免煎中药&#xff0c;源自传统中药饮片&#xff0c;经过提取、分离、浓缩、干燥、制粒、包装等工艺加工而成。这种新型配方药物完整保留了原中药饮片的所有特性。既能满足医师的辨证论治和随症加减需求&#xff0c;同时具备强劲好人高效的…...

PXI总线测试模块-6951E 信号分析仪

6951E 信号分析仪 频率范围&#xff1a;10Hz&#xff5e;26.5GHz 6951E信号分析仪率范围覆盖10Hz&#xff5e;26.5GHz、带宽40MHz&#xff0c;具备频谱分析、相邻信道功率测试、模拟解调、噪声系数测试等多种测量功能。 6951E信号分析仪采用PXIe总线3U 4槽结构形式&#xff…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...