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

[Angular] 笔记 11:可观察对象(Observable)

chatgpt:

在 Angular 中,Observables 是用于处理异步数据流的重要工具。它们被广泛用于处理从异步操作中获取的数据,比如通过 HTTP 请求获取数据、定时器、用户输入等。Observables 提供了一种机制来订阅这些数据流,并可以在数据到达时执行相应的操作。其优势在于能够处理异步操作、多个事件以及数据的转换和组合,使得对数据流的处理更为灵活和高效。在 Angular 中,Observables 常用于处理 HTTP 请求、与路由、表单和事件处理等方面。


当涉及 Observable,20%的知识覆盖了80%的应用场景。

Observable在代码中被广泛应用于异步操作。

异步操作在前端确保 UI 界面不会冻结,在后端能够提高系统性能。

在这里插入图片描述
Observer 和 Observable 之间的关系:

在这里插入图片描述

接下来安装一个用于测试的后端: json-server.

vscode terminal 运行: npm i -g json-server,这里必须有 -g,否则后面的 json-server 命令会无法识别。
然后在项目的根目录创建文件 db.json

在这里插入图片描述

db.json 文件内容:

{"pokemon": [{"id": 1,"name": "pikachu","type": "electric","isCool": false,"isStylish": true},{"id": 2,"name": "squirtle","isCool": true,"isStylish": true},{"id": 3,"name": "charmander","type": "fire","isCool": true,"isStylish": false}]
}

vscode terminal 运行命令:

json-server --watch db.json

PS D:\Angular\my-app> json-server --watch db.json\{^_^}/ hi!Loading db.jsonDoneResourceshttp://localhost:3000/pokemonHomehttp://localhost:3000

访问 http://localhost:3000/pokemon,可以看到用于测试的数据:

在这里插入图片描述
pokeman-base.module.ts 文件中 import HttpClientModule:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { PokemonListComponent } from './pokemon-list/pokemon-list.component';
import { PokemonDetailComponent } from './pokemon-detail/pokemon-detail.component';
import { PokemonService } from '../services/pokemon.service';
import { HttpClientModule } from '@angular/common/http';@NgModule({declarations: [PokemonListComponent, PokemonDetailComponent],imports: [CommonModule, HttpClientModule],  // Add HttpClientModule!!!exports: [PokemonListComponent, PokemonDetailComponent],providers: [PokemonService],
})
export class PokemonBaseModule {}

接下来访问 http client, pokemon.service.ts:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http'; // 新增 import
import { Pokemon } from '../models/pokemon';
import { Observable } from 'rxjs';// endpoint
const POKEMON_API = 'http://localhost:3000/pokemon';@Injectable({providedIn: 'root',
})
export class PokemonService {constructor(private http: HttpClient) {}getPokemons(): Observable<Pokemon[]> {return this.http.get<Pokemon[]>(POKEMON_API);}
}

pokeman-list.component.ts:

import { Component, OnInit } from '@angular/core';
import { Pokemon } from 'src/app/models/pokemon';
import { PokemonService } from 'src/app/services/pokemon.service';@Component({selector: 'app-pokemon-list',templateUrl: './pokemon-list.component.html',styleUrls: ['./pokemon-list.component.css'],
})
export class PokemonListComponent implements OnInit {pokemons!: Pokemon[];// 修改 constructorconstructor(private pokemonService: PokemonService) {}handleRemove(event: Pokemon) {this.pokemons = this.pokemons.filter((pokemon: Pokemon) => {return pokemon.id !== event.id;});}ngOnInit(): void {// 填充 pokemons 属性// this.pokemons = this.pokemonService.getPokemons();this.pokemonService.getPokemons().subscribe((data: Pokemon[])=>{console.log(data)this.pokemons = data;})}
}

运行 ng serve:

在这里插入图片描述


Angular for Beginners

相关文章:

[Angular] 笔记 11:可观察对象(Observable)

chatgpt: 在 Angular 中&#xff0c;Observables 是用于处理异步数据流的重要工具。它们被广泛用于处理从异步操作中获取的数据&#xff0c;比如通过 HTTP 请求获取数据、定时器、用户输入等。Observables 提供了一种机制来订阅这些数据流&#xff0c;并可以在数据到达时执行相…...

【论文阅读】Resource Allocation for Text Semantic Communications

这是一篇关于语义通信中资源分配的论文。全文共5页&#xff0c;篇幅较短。 目录在这里 摘要关键字引言语义通信资源分配贡献公式符号 系统模型DeepSC TransmitterTransmission ModelDeepSC Receiver 语义感知资源分配策略Semantic Spectral Efficiency &#xff08;S-SE&#…...

VMware16 pro 安装openEuler-23.09-x86_64,详细操作流程+详图。

1.环境&#xff1a; win11, vmware16 pro, openEuler-23.09-x86_64-dvd.iso 社区版openEuler 23.09官方下载地址&#xff1a; openEuler下载 | 欧拉系统ISO镜像 | openEuler社区官网欧拉操作系统(openEuler, 简称“欧拉”)是面向数字基础设施的操作系统,支持服务器、云计算、…...

Mybatis 动态 SQL - script,bind,多数据库支持

script 在使用注解的映射器类中使用动态SQL时&#xff0c;可以使用<script>元素。例如&#xff1a; Update({"<script>","update Author"," <set>"," <if testusername ! null>username#{username},</if&g…...

Scikit-Learn线性回归(一)

Scikit-Learn线性回归一 1、线性回归概述1.1、回归1.2、线性1.3、线性回归1.4、线性回归的优缺点1.5、线性回归与逻辑回归2、线性回归的原理2.1、线性回归的定义与原理2.2、线性回归的损失函数3、Scikit-Learn线性回归3.1、Scikit-Learn库3.2、Scikit-Learn线性回归API3.3、Sci…...

Mybatis 动态 SQL - choose, when, otherwise

有时候我们并不希望所有的条件都生效&#xff0c;而是只想在多个选项中选择一个。类似于Java中的switch语句&#xff0c;MyBatis提供了 ​<choose>​元素。 让我们使用上面的例子&#xff0c;但现在如果提供了标题&#xff0c;则只搜索标题&#xff1b;如果提供了作者&a…...

idea Spring Boot项目使用JPA创建与数据库链接

1.pom.xml文件中添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>…...

redis基础知识

学一点&#xff0c;整一点&#xff0c;基本都是综合别人的&#xff0c;弄成我能理解的内容 https://blog.csdn.net/liqingtx/article/details/60330555 https://blog.csdn.net/u014723137/article/details/125658176 https://redis.io/commands/ 官方命令 &#x1f4cc;导航小助…...

最短路径(数据结构实训)(难度系数100)

最短路径 描述&#xff1a; 已知一个城市的交通路线&#xff0c;经常要求从某一点出发到各地方的最短路径。例如有如下交通图&#xff1a; 则从A出发到各点的最短路径分别为&#xff1a; B&#xff1a;0 C&#xff1a;10 D&#xff1a;50 E&#xff1a;30 F&#xff1a;60 输…...

基于SSM实现的电动汽车充电网点管理系统

一、系统架构 前端&#xff1a;jsp | jquery | bootstrap | css 后端&#xff1a;spring | springmvc | jdbc 环境&#xff1a;jdk1.8 | mysql 二、代码及数据库 三、功能介绍 01. web端-首页 02. web端-登录 03. web端-注册 04. web端-我要充电 05. web端-个人中心-消…...

Android ImageView如何使用.svg格式图片

我们知道imageview常用的图片格式是.jpg/.png或者drawable里的部分.xml文件。但有时UI会给过来.svg格式的文件&#xff0c;下面讲解如何使用.svg格式图片文件 step1:AS点击File -> New -> Vector Asset step2:选中要使用的.svg文件&#xff0c;按需要命名和调整&#x…...

力扣热题100道-子串篇

字串 560.和为K的子数组 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&a…...

day3--Shell

1.shell语法 概论 概论 shell是我们通过命令行与操作系统沟通的语言。shell脚本可以直接在命令行中执行&#xff0c;也可以将一套逻辑组织成一个文件&#xff0c;方便复用。 AC Terminal中的命令行可以看成是一个“shell脚本在逐行执行”。Linux中常见的shell脚本有很多种&…...

【数据结构】插入排序、选择排序、冒泡排序、希尔排序、堆排序

前言&#xff1a;生活中我们总是会碰到各种各样的排序&#xff0c;今天我们就对部分常用的排序进行总结和学习&#xff0c;今天的内容还是相对比较简单的一部分&#xff0c;各位一起加油哦&#xff01; &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f44…...

TiDB 7.5 LTS 发版丨提升规模化场景下关键应用的稳定性和成本的灵活性

互联网时代&#xff0c;数据的迅猛增长给数据库带来了可扩展性的挑战&#xff0c;Gen AI 带来的数据暴增更加剧了这种挑战。传统的数据分片已经不能承载新时代数据暴增的需求&#xff0c;更简单且具有前瞻性的方法则是采用原生分布式数据库来解决扩展性问题。在这种规模化场景的…...

服务器数据恢复-误操作导致xfs分区数据丢失的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌OceanStorT系列某型号存储MD1200磁盘柜&#xff0c;组建的raid5磁盘阵列。上层分配了1个lun&#xff0c;安装的linux操作系统&#xff0c;划分两个分区&#xff0c;分区一通过lvm进行扩容&#xff0c;分区二格式化为xfs文件系统。 服务器…...

安装Kubernetes1.23、kubesphere3.4、若依项目自动打包部署到K8S记录

1.安装kubernetes1.23详细教程 kubernetes(k8s)集群超级详细超全安装部署手册 - 知乎 2.安装rancher动态存储 kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml3.安装kubesphere3.4 准备工作 您…...

(三) `MaterializedMySQL`同步机制解读

当使用 ClickHouse 的 MaterializedMySQL 引擎进行全量同步时&#xff0c;它主要依赖于两个关键机制&#xff1a;初始全量数据导入和随后的增量更新。以下是这些机制的详细解释&#xff1a; 初始全量数据导入 读取现有数据: 当您在 ClickHouse 中创建一个 MaterializedMySQL 类…...

使用 stream 流构建树(不使用递归)

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言代码实现定义测试实体类实现方法 前言 最近遇到一个地区数据需要转换成树的需求&#xff0c;研究了一种…...

docker 部署 个人网页版 wps office

先声明一下&#xff0c;这个是用的linux桌面&#xff0c;然后安装了一个wps软件 安装好之后&#xff0c;通过我们自己的浏览器进行操作。。。。。 我只是试了一下&#xff0c;目前发现只能一个人用&#xff0c;里面还有谷歌浏览器&#xff0c;就是一个远程linux桌面 docker …...

别再手动贴图了!LOD1.3建模的智能纹理库怎么用?手把手教你配置大势智慧材质模板

LOD1.3建模革命&#xff1a;智能纹理库的实战配置指南 当清晨的第一缕阳光透过窗户洒在建模师的工作台上&#xff0c;那些曾经需要数小时手动贴图的建筑模型&#xff0c;如今只需几分钟就能自动完成纹理匹配。这不是未来场景&#xff0c;而是LOD1.3建模中智能纹理库技术带来的…...

如何快速掌握CircuitJS1:免费高效的浏览器电路仿真终极指南

如何快速掌握CircuitJS1&#xff1a;免费高效的浏览器电路仿真终极指南 【免费下载链接】circuitjs1 Electronic Circuit Simulator in the Browser 项目地址: https://gitcode.com/gh_mirrors/ci/circuitjs1 CircuitJS1是一款功能强大的电子电路仿真工具&#xff0c;它…...

中兴光猫终极管理工具:一键开启工厂模式与永久Telnet完全指南

中兴光猫终极管理工具&#xff1a;一键开启工厂模式与永久Telnet完全指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu zteOnu是一款专为中兴光猫设备设计的开源管理工具&#xff0c…...

汽车电子工程师必看:ISO 16750-2023全套标准解读与实战应用指南

汽车电子工程师必看&#xff1a;ISO 16750-2023全套标准解读与实战应用指南 在汽车电子领域&#xff0c;每一次技术迭代都伴随着更严苛的可靠性要求。去年参与某新能源车企的域控制器项目时&#xff0c;我们团队曾因忽视化学负荷测试导致批量产品在盐雾试验中失效——这个价值七…...

无人机巡检避坑指南:用YOLOv5n做罂粟识别,这些光照和遮挡问题怎么解决?

无人机巡检实战&#xff1a;YOLOv5n在复杂环境下的罂粟识别优化策略 清晨的露珠还挂在叶片上&#xff0c;无人机已经盘旋在田野上空。对于从事智能巡检的工程师来说&#xff0c;这样的场景再熟悉不过——但随之而来的挑战也令人头疼&#xff1a;强烈的晨光让部分区域过曝&#…...

langchain4j笔记-09

RAG 1. easy rag Test void test03() {// 1. 创建模型// 2. 加载文档List<Document> documents ClassPathDocumentLoader.loadDocuments("excel");//List<Document> documents FileSystemDocumentLoader.loadDocuments("/home/langchain4j/docum…...

Arm SVE2向量存储指令ST3Q/ST4Q详解与应用优化

1. SVE2向量存储指令概述在Armv9架构中&#xff0c;SVE2&#xff08;Scalable Vector Extension 2&#xff09;作为第二代可扩展向量指令集&#xff0c;引入了多项增强的向量处理能力。其中ST3Q和ST4Q指令是专门为高效存储三路和四路128位宽向量数据而设计的谓词化存储操作。这…...

告别云台乱晃!手把手教你用Arduino+SG90舵机实现‘鸡头稳定’效果(附PID模拟器使用心得)

从鸡头稳定到智能云台&#xff1a;ArduinoPID算法实战指南 你是否注意过鸡在行走时头部能保持惊人的稳定&#xff1f;这种被称为"鸡头稳定"的生物现象&#xff0c;启发了工程师们设计出能自动补偿晃动的智能云台系统。本文将带你用Arduino、SG90舵机和MPU6050传感器&…...

【亲测免费】 探索RS485通信的利器:开源项目推荐

探索RS485通信的利器&#xff1a;开源项目推荐 【下载地址】RS485通信程序 本仓库提供了一个完整的RS485通信程序&#xff0c;经过本人亲自测试&#xff0c;程序注释详细&#xff0c;非常适合作为学习和开发的参考例程。无论你是初学者还是有经验的开发者&#xff0c;这个资源都…...

【免费下载】 让您的无线网络更稳定:Realtek 8188GU 无线网卡驱动推荐

让您的无线网络更稳定&#xff1a;Realtek 8188GU 无线网卡驱动推荐 【下载地址】Realtek8188GU无线网卡驱动 本仓库提供适用于Windows系统的Realtek 8188GU无线网卡驱动程序。该驱动程序旨在帮助用户解决无线网卡无法正常工作的问题&#xff0c;确保您的设备能够稳定连接到无线…...