首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Angular:9如何从另一个同级组件中更改变量?

在Angular 9中,要从另一个同级组件中更改变量,可以通过以下步骤实现:

  1. 创建一个共享服务(Shared Service):在Angular中,可以使用共享服务来在组件之间共享数据和方法。首先,创建一个共享服务,可以使用Angular的命令行工具(CLI)来生成一个新的服务文件。在命令行中运行以下命令:
代码语言:txt
复制
ng generate service shared

这将在src/app目录下创建一个名为shared的文件夹,并在其中生成一个shared.service.ts文件。

  1. 在共享服务中定义要共享的变量:在shared.service.ts文件中,定义一个变量,并提供一个公共的setter方法和getter方法来更改和获取该变量的值。例如:
代码语言:txt
复制
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class SharedService {
  private sharedVariable: string;

  constructor() { }

  setSharedVariable(value: string) {
    this.sharedVariable = value;
  }

  getSharedVariable() {
    return this.sharedVariable;
  }
}
  1. 在要更改变量的组件中注入共享服务:在要更改变量的组件中,通过构造函数注入共享服务。例如,假设要更改变量的组件名为ComponentA:
代码语言:txt
复制
import { Component } from '@angular/core';
import { SharedService } from '../shared/shared.service';

@Component({
  selector: 'app-component-a',
  template: `
    <button (click)="changeVariable()">Change Variable</button>
  `
})
export class ComponentA {
  constructor(private sharedService: SharedService) { }

  changeVariable() {
    this.sharedService.setSharedVariable('New Value');
  }
}
  1. 在另一个组件中获取共享的变量:在另一个组件中,也通过构造函数注入共享服务,并使用getter方法获取共享的变量的值。例如,假设要获取共享变量的组件名为ComponentB:
代码语言:txt
复制
import { Component } from '@angular/core';
import { SharedService } from '../shared/shared.service';

@Component({
  selector: 'app-component-b',
  template: `
    <p>{{ sharedVariable }}</p>
  `
})
export class ComponentB {
  sharedVariable: string;

  constructor(private sharedService: SharedService) {
    this.sharedVariable = this.sharedService.getSharedVariable();
  }
}

通过以上步骤,你可以在ComponentA中更改共享变量的值,并在ComponentB中获取到更新后的值。这样,你就实现了从另一个同级组件中更改变量的功能。

关于Angular的更多信息和详细介绍,你可以参考腾讯云的Angular产品文档: Angular产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

开始使用-安装 顶

应用程序可能有多个注入器.Angular应用程序是一个组件树.每一个组件实例有它自己的注入器.组件树与注入器树相平行. 组件的注入器可能是组件更高层级的祖先注入器的一个代理 ....注入器冒泡 当一个组件请求依赖时, Angular尝试使用组件自己的注入器的注册过的提供者满足依赖....因此,中间注射器的提供者较低的东西拦截对服务的请求。 它有效地“重新配置”和“隐藏”树较高级别的提供者。...如果在今后VillainsService发生更改, 你可能需要在hero组件的某个地方中断某些操作. 这不仅发生在想象以致提供服务的AppComponent将产生风险....能改变一个税单不影响另一个组件的返回值. 拥有保存和取消更改税单的能力. ? 一种可能的假设HeroTaxReturnComponent有管理和恢复更改的逻辑.

75310

AngularDart4.0 高级-层级依赖注入器 顶

应用程序可能有多个注入器.Angular应用程序是一个组件树.每一个组件实例有它自己的注入器.组件树与注入器树相平行. 组件的注入器可能是组件更高层级的祖先注入器的一个代理 ....注入器冒泡 当一个组件请求依赖时, Angular尝试使用组件自己的注入器的注册过的提供者满足依赖....因此,中间注射器的提供者较低的东西拦截对服务的请求。 它有效地“重新配置”和“隐藏”树较高级别的提供者。...如果在今后VillainsService发生更改, 你可能需要在hero组件的某个地方中断某些操作. 这不仅发生在想象以致提供服务的AppComponent将产生风险....能改变一个税单不影响另一个组件的返回值. 拥有保存和取消更改税单的能力. ? 一种可能的假设HeroTaxReturnComponent有管理和恢复更改的逻辑.

85310
  • AngularDart4.0 指南- 模板语法一 顶

    学习如何编写显示数据并在数据绑定的帮助下使用用户事件的模板。 Angular应用程序管理用户看到和可以做的事情,通过组件类实例(组件)和面向用户的模板的交互来实现这一点。...您可以使用组件和指令出现的新元素和属性来扩展模板的HTML词汇表。 在下面的章节,您将学习如何通过数据绑定来动态获取和设置DOM(文档对象模型)值。...这个视图在整个渲染过程应该是稳定的。 快速执行 Angular在每个更改检测周期后执行模板表达式。 更改检测周期由许多异步活动触发,如承诺的分辨率,http结果,计时器事件,按键和鼠标移动。...就是如何用户操作更新应用程序状态。 响应事件是Angular的“单向数据流”的另一面。在事件循环的这个周期中,您可以自由地在任何地方进行所有更改。...然后,您将学习如何使用封装了HTML的组件创建新元素,并将它们放入模板,就好像它们是原生HTML元素一样。 <!

    5.1K10

    AngularDart 4.0 高级-结构指令 顶

    指南在描述如何将指令应用于HTML模板的元素时引用了属性(attribute)名称。 还有其他两种Angular指令,在其他地方被广泛描述:(1)组件和(2)属性指令。...组件以本地HTML元素的方式管理HTML区域。 从技术上讲,这是一个模板指令。 属性指令改变元素,组件或其他指令的外观或行为。 例如,内置的NgStyle指令可以同时更改多个元素样式。...当条件为false时,NgIfDOM删除它的宿主元素,将它从DOM事件(它所依附的)中分离出来,将组件Angular变化检测中分离出来并销毁它。 组件和DOM节点可以被垃圾收集并释放内存。...该组件保持连接到其DOM元素。 它一直在倾听事件。 Angular不断检查可能会影响数据绑定的更改。 无论组件在做什么,它都会继续这样做。 虽然看不见,但组件及其所有后代组件都会占用资源。...您可以在其他结构指令的定义再次使用相同的变量名称。 您通过在#(#var)前缀加上变量名称来声明一个模板引用变量。 引用变量是指其附加的元素,组件或指令。 它可以在整个模板的任何地方访问。

    16.1K20

    一个Angular 5教程:一步一步指导实现你的第一个Angular 5应用程序

    以下是Angular如何知道如何找到与我们的标签相对应的组件。显然,templateUrl并且styleUrls定义Angular应该哪里获取我们的标记和CSS。...我们InputAngular代码导入,并将其用作类型为Array的任何类型对象的类级变量卡的装饰器。...实际上,Angular为我们提供了一些糖语,我们可以在这里使用它,所以我另一个角度开始解释糖的工作原理。...使用本地事件 所以我们有我们的变量填充,但我们仍然需要将该值发送到AppComponent的卡列表。为了将数据传递给Angular组件,我们必须有输入。...如果我们About在应用程序需要一个页面会怎么样 我们如何将它添加到我们当前的代码库?显然,该页面应该是一个组件(与Angular的其他内容一样)。我们来生成这个组件

    42.6K10

    【17】进大厂必须掌握的面试题-50个Angular面试

    另一方面,装饰器是用于分离装饰或修改类的设计模式,而无需实际更改原始源代码。 9.您对Angular的控制器了解多少? 控制器是JavaScript函数,可为HTML UI提供数据和逻辑。...顾名思义,它们控制数据如何服务器流到HTML UI。 10. Angular的范围是什么? Angular的范围是一个引用应用程序模型的对象。它是表达式的执行上下文。...## 30.组件和指令的生命周期挂钩是什么? Angular组件具有离散的生命周期,其中包含出生到死亡过渡的不同阶段。...由于所有监视变量都包含在单个循环中,因此任何变量的任何更改/更新都将导致重新分配DOM存在的其余监视变量。...被监视的变量处于单个循环(摘要循环),任何变量的任何值更改都会在DOM重新分配其他被监视变量的值 32.区分DOM和BOM。

    41.3K51

    angular面试题及答案_angular面试

    Angular中有三种方法可以做到这一点: Emulated : 样式其他HTML传播到组件。 Native : 来自其他HTML的样式不会传播到组件。...None:组件定义的样式对所有组件都是可见的。 9....在传统的web技术,客户端请求一个web页面(HTML/JSP/asp),服务器返回资源(或HTML页面),客户端再次请求另一个页面,服务器用另一个资源响应。...ngOnInit : 在angular 第一次显示数据绑定和设置指令、组件的输入属性之后,初始化指令、组件 所以angular的生命周期看,constructor是执行在先的 所以既然ngOnchanges...使用场景 constructor 不适合进行任何和组件通信类似的复杂操作,一般在constructor中进行一些简单的初始化操作,比如依赖注入、变量初始化等。

    11K120

    AngularDart 4.0 高级-生命周期钩子 顶

    OnChanges 看看每次组件输入属性发生变化时,Angular如何用变更对象调用ngOnChanges钩子。 显示如何解释更改对象。...AfterContent 演示如何将外部内容投影到组件,以及如何区分组件的视图中的投影内容和子组件。 演示ngAfterContentInit和ngAfterContentChecked挂钩。...AngularDOM移除所有英雄元素并同时销毁他们的间谍指令。 间谍的ngOnDestroy方法报告其最后时刻。...构造函数不应仅仅将初始局部变量设置为简单值。 ngOnInit是组件获取其初始数据的好地方。 教程和HTTP章节显示了如何。 还要记住,指令的数据绑定输入属性在构建之后才会设置。...内容投影 内容投影是一种组件外部导入HTML内容并将该内容插入组件模板中指定位置的方法。 Angular 1开发人员知道这种技术是跨越式的。 考虑以前的AfterView示例的这种变化。

    6.2K10

    AngularDart4.0 指南- 表单 顶

    一路上你将学习如何: 用组件和模板构建一个Angular表单。 使用ngModel创建读取和写入输入控制值的双向数据绑定。 跟踪状态变化和表单控件的有效性。...创建一个基本的表单 一个Angular表单有两个部分:一个基于HTML的模板和一个组件类,以编程方式处理数据和用户交互。 课程开始,因为它简要地说明了英雄编辑可以做什么。...靠近表单顶部的诊断确认所有的更改都反映在model模板删除诊断绑定,因为它已经达到了目的。 根据控制状态给出视觉反馈 使用CSS和类绑定,您可以更改表单控件的外观以反映其状态。...临时将另一个名为spy的模板引用变量添加到Name 标记,并使用它显示输入的CSS类。...概要 Angular表单为数据修改,验证等提供支持。 在此页面,您学习了如何使用以下功能: 一个HTML表单模板和一个带有@Component注解的表单组件类。

    17.5K30

    AngularDart4.0 指南- 模板语法二 顶

    谁可以记住要设置哪个元素属性以及哪个元素事件发出用户更改如何输入框中提取当前显示的文本,以便更新数据属性? 谁想每一次都看看?...当指令没有合适的宿主元素时如何对元素进行分组。 如何编写自己的结构指令。 为什么你只能应用一个结构指令到一个元素。 本节介绍常见的结构指令: NgIf:有条件地DOM添加或删除元素。...当你隐藏一个元素时,该元素及其所有的后代仍然保留在DOM。 这些元素的所有组件都保留在内存Angular可能会继续检查更改。 您的应用可能会占用相当可观的计算资源,会降低用户不可见的性能。...当NgIf为false时,AngularDOM删除元素及其后代。 它摧毁了他们的组件,潜在地释放了大量的资源,从而带来了更加快速的用户体验。 展示/隐藏技术适合少数几个后代的元素。... 模板引用变量(#var) 模板引用变量通常是对模板内DOM元素的引用。 它也可以是对Angular组件或指令或Web组件的引用。 使用hash符号(#)来声明一个引用变量

    29.9K20

    Angular v18 现已推出!

    如需直观概述,请务必查看我们发布活动的视频:不断发展的变化检测历史上看,一个名为 zone.js 的库负责触发 Angular更改检测。该库具有许多开发人员体验和性能缺点。...() ]});添加提供程序后, 的 polyfill 删除zone.js。...开发者预览版的信号 API在 Angular 版本 17.1 和 17.2 ,我们宣布了新的信号输入、基于信号的查询和新的输出语法。在我们的信号指南中了解如何使用 API。...作为收敛努力的结果,Wiz 将 Angular Signals 深度集成到他们的渲染模型。在 ng-conf 上,我们分享了 YouTube 现在如何使用 Angular Signals。...如果你的应用有任何冻结错误,Angular DevTools 将在组件资源管理器可视化它们。

    19610

    Angular的12个经典问题,看看你能答对几个?(文末附带Angular测试)

    @angular/core会创建组件,渲染它,创建并呈现它的后代。当@angular/core的数据绑定属性更改时,处理就会更改,在从DOM删除其模板之前,就会销毁掉它。...这是最常用的方法,用于后端服务检索模板的数据。 ngDoCheck:检测并在Angular上下文发生变化时执行。每次更改检测运行时,会被调用。...它是如何Angular 2工作的? Angular 2不具有双向digest cycle,这是与Angular 1不同的。...在Angular2组件中发生的任何改变总是当前组件传播到其所有子组件。如果一个子组件更改需要反映到其父组件的层次结构,我们可以通过使用事件发射器api来发出事件。...这通常用在setter,当类的值被更改完成时。 可以通过模块的任何一个组件,使用订阅方法来实现事件发射的订阅。

    17.3K80

    【JavaScript数据网格】上海道宁51component为你带来企业JS开发人员首选的数据网格——AG Grid

    它还减少了移动框架时所需的工作(例如,Angular 1移动到 Angular,VueJS到React等)。...这意味着AG Grid 不仅可以作为React或Angular组件使用,它还允许您在AG Grid中使用React和Angular进行自定义单元格渲染。...AG Grid不知道有任何其他网格组件允许您网格内的任何这些框架中进行选择,同时保持不可知论。04、专用框架GUI支持AG Grid有一组用于主网格的核心代码。...没有理由购买另一个数据网格。AG Grid的企业版包含超越市场上其他数据网格的功能。目前几乎找不到有任何其他网格提供与AG Grid相同级别的企业功能。AG Grid通常用作其他网格竞争的基线。...使一个或多个网格水平对齐,以便一个网格的任何列更改都会影响另一个网格。这允许具有不同数据的两个网格保持水平同步。集成图表图表功能与网格深度集成。

    4.3K40

    angular知识点梳理第三篇-组件

    文章目录 前文回顾 组件介绍 什么是组件 创建一个组件 更改默认启动页内容 组件模块介绍 组件的生命周期 组件之间传值 父子之间传值 父组件传值(函数)给子组件 第一步:在parent组件的ts文件...ts文件中进行函数和数据的执行 【parent.component.ts】 写到后面 前文回顾 第一篇的时候我们对angular进行了一个简单的介绍,主要是认识了angular以及如何创建一个angular...,我们创建两个组件,分别是父组件和子组件,两个组件一个被另一个引入,被引入的一个就是子组件,引入的是父组件!.../app-children> 第三步:在子组件的ts文件中使用@Input进行接收父组件的值 【children.component.ts】 //这里我们需要引入angular核心模块的Input模块进行接收父组件变量值...()"> 执行子组件的childfunc方法 第二步:在子组件声明一些需要传递的变量 【children.component.ts】 //这里我们需要引入angular核心模块的Input

    2.2K10

    如何在 Windows 上安装 AngularAngular CLI、Node.js 和构建工具指南

    Angular CLI, Node.js, and Build Tools,作者为Ahmed Bouchefra 在本教程,我们将学习如何在 Windows 安装 Angular CLI 并使用它来创建...build (b): 将 Angular 应用程序编译到给定输出路径上名为 dist/ 的输出目录。必须工作空间目录执行。 config: 检索或设置 Angular 配置值。...Angular CLI 将自动在 src/app.module.ts 文件添加对组件、指令和管道的引用。...如果您想将组件、指令或管道添加到另一个模块 (主应用程序模块 app.module.ts 除外),您只需在组件名称前加上模块名称和斜杠 即可: $ ng g component my-module/my-component...结论 在本教程,我们了解了如何在 Windows 计算机上安装 Angular CLI,并使用它从头开始初始化一个新的 Angular 项目。

    36600

    探索 React 内核:深入 Fiber 架构和协调算法

    React 元素到 Fiber 节点 React 的每个组件都有一个 UI 表示,我们可以称之为 render 方法返回的一个视图或模板。...或者,你可以组件实例获取单个 fiber 节点,像这样: compInstance....在这种情况下,React退出工作循环并准备提交更改。 处理过当前 fiber 后,变量将持有树中下一个 fiber 节点的引用或 null 。...图中可以清楚地看到,算法是如何从一个分支转到另一个分支。 在回溯到父节点之前,它首先完成子节点的 work,。 ?...返回的指针将被赋值给 nextUnitOfWork 变量,React将从同级节点开始为分支执行工作。 需要重点理解的是,React 目前仅完成了之前的同级节点 ( siblings ) 的工作。

    2.2K20

    现代web开发方法

    单页应用程序概述(SPA) 内容数据库获取,然后通过控制器传递,最后在视图模板发送前与视图模板合并 这体现在每次浏览应用程序或网站时重新加载的页面的形式。...以下是最流行的基于JavaScript的单页面应用程序(SPA)框架 Angular.js - 连接到静态HTML的客户端库,具有一组用于数据绑定的属性 ReactJS - 用于构建Web应用程序的基于组件的客户端库...,组合模式,策略模式等设计模式的组合应用下的产物,此刻论原生js的重要性..哈哈 一个服务器端的例子 这个例子展示了我们如何获取和渲染不同级别的用户列表 让我们获取用户的服务器端控制器开始,以JSON...*/ this.users = JSON.parse(request.responseText); } }; } }; 我们可以使用以下代码列表呈现用户...但是,视图是将整个页面放在一起的不同组件的总体集合 绑定 - 处理该视图的控制器内的数据更改时,自动更新的视图的渲染内容 路由 - 在浏览应用程序时,这使用HTML5 pushState深度链接不同的视图

    2.2K10

    前端面试题angular_Vue前端面试题

    这样会导致,在 ng-if 中用基本变量绑定 ng-model,并在外层 div 把此 model 绑定给另一个显示区域,内层改变时,外层不会同步改变,因为此时已经是两个变量了。...避免这类问题出现的办法是,始终将页面的元素绑定到对象的属性(data.x)而不是直接绑定到基本变量(x)上。 2,ng-repeat迭代数组的时候,如果数组中有相同值,会有什么问题,如何解决?...5、angular 控制器之间如何通信?...AngularJS在scope变量中使用脏值检查来实现了数据双向绑定,并且可以通过scope.watch来监听变化触发回调; angular中使用的是脏检查机制,在angular每次你绑定一些东西到你的...貌似在 Angular1.x 并没有很好的解决办法,所以最好在前期进行统一规划,做好约定,严格按照约定开发,每个开发人员只写特定区块代码。 9angular 的缺点有哪些?

    14.1K20

    前端常见面试题--初级版

    ### 回答示例:**变量提升:**在JavaScript变量的声明会被提升到其所在作用域的顶部,但赋值不会。这意味着你可以在声明之前的代码访问变量,但只能访问到其声明,而不是其值。...2.如何在 React 实现组件之间的通信?3.Angular 的依赖注入是如何工作的?4.你如何使用 jQuery 选择和操作 DOM?...**Angular依赖注入:**Angular的依赖注入系统负责创建和管理应用的对象及其依赖关系。你可以通过服务(Service)和依赖注入器(Injector)来实现依赖注入。...初始化:使用git init命令在项目目录初始化Git仓库。添加更改:使用git add命令将文件添加到暂存区。提交:使用git commit命令将暂存区的更改提交到本地仓库,并添加提交信息。...同步:使用git pull远程仓库拉取最新更改,使用git push将本地更改推送到远程仓库。

    7210
    领券