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

Angular 2指令--你怎么知道是哪个孩子调用了这个指令?

Angular 2是一种流行的前端开发框架,它引入了指令的概念来扩展HTML的功能。指令是一种特殊的HTML属性,用于给HTML元素添加行为和样式。

在Angular 2中,要确定是哪个孩子调用了指令,可以使用指令的输入属性和输出属性来实现。输入属性允许父组件向子组件传递数据,而输出属性则允许子组件向父组件发送事件。

首先,我们可以在指令中定义一个输入属性,用于接收父组件传递的数据。例如,我们可以定义一个名为"childId"的输入属性:

代码语言:txt
复制
@Input() childId: number;

然后,在父组件中,我们可以通过绑定这个输入属性来传递数据给子组件:

代码语言:txt
复制
<app-child [childId]="1"></app-child>

接下来,我们可以在指令中定义一个输出属性,用于发送事件给父组件。例如,我们可以定义一个名为"childClicked"的输出属性:

代码语言:txt
复制
@Output() childClicked: EventEmitter<number> = new EventEmitter<number>();

然后,在子组件中,我们可以通过调用这个输出属性的emit方法来发送事件给父组件:

代码语言:txt
复制
onClick() {
  this.childClicked.emit(this.childId);
}

最后,在父组件中,我们可以监听子组件的输出事件,并在事件处理程序中获取到调用指令的孩子的信息:

代码语言:txt
复制
<app-child (childClicked)="onChildClicked($event)"></app-child>
代码语言:txt
复制
onChildClicked(childId: number) {
  console.log("Child with ID " + childId + " called the directive.");
}

通过这种方式,我们可以确定是哪个孩子调用了指令,并在父组件中进行相应的处理。

对于Angular 2指令的更多信息和使用示例,您可以参考腾讯云的相关产品文档:

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

相关·内容

Angular 中结构指令模式 - 它们是什么且怎么使用

如果对学习 结构指令 感兴趣,那么现在我们就来接着阅读,并了解它们是什么,它们有什么用以及如何在项目中使用它们。 将学到什么 在本文中,将学到关于 Angular 结构指令模式的知识点。...知道它们是什么并且怎么去使用它们。 学完本文,将更好理解这些指令并在实际项目中使用它们。 Angular 结构指令是什么? Angular 结构指令能够更改 DOM 结构的指令。...比如: {{worker.name}} Angular 结构指令怎么工作的...> 怎么使用 *ngIf 指令 我们根据条件来使用 *ngIf 来确定展示或者移除一个元素。...*ngSwitch 指令 译者加:这个指令实际开发很有用 我们使用 ngSwitch 来根据不同条件声明来决定渲染哪个元素。

3.8K20

Angularjs1.X进阶笔记(1)—两种不同的双向数据绑定

如果我们自己来考虑,javascript中有一个变量的值发生了变化,现在要将这个值同步到html页面上,需要怎么做呢?...我们需要获取到这个DOM元素,然后改变它的innerHTML属性,如果表单元素就修改value。其实Angularjs也是这样做的,只不过使用了自己的封装的方法——$apply()。...解决方案2 在手动绑定的监听回中,修改自定义指令作用域内的变量后,使用scope.$emit( )方法通知其父级controller,并在controller中使用$scope....3.2 双向数据绑定的实践经验 想要在Angularjs项目中更加稳定地使用双向数据绑定,笔者的建议: 在Angularjs项目中,尽可能地使用Angular告诉的方式去编写所希望实现的功能。...我们可以回顾一下上面在使用双向数据绑定发生异常时的场景: 使用了原生的定时器(Angular应该使用$interval,$timeout服务) 用类原生方法(bind)为元素添加事件监听器,并在回函数中修改了变量的值

3.5K20
  • 再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结

    典型的需要调用 $apply() 方法的场景: 1) 使用了 JavaScript 中的 setTimeout() 来更新一个 scope model 2) 用指令设置一个 DOM 事件 listener...angular 会因为这个事件回函数什么都没做就不进行脏检查吗?不会。 然后:#span1 被隐藏掉了,会检查绑定在它上面的表达式吗?尽管用户看不到,但是 $scope....2、善用 ng-if 减少绑定表达式的数量 如果认为 ng-if 就是另一种用于隐藏、显示 DOM 元素的方法就大错特错了。...factory 和 service 功能类似,只不过 factory 普通 function,可以返回任何东西(return 的都可以被访问,所以那些私有变量怎么懂的);service 构造器,...DOM,这个DOM处理了指令,连接了数 $compile个编译服务。

    7.8K40

    (转) 别再对 Angular 表单的 ControlValueAccessor 感到迷惑

    网上有大量文章描述如何实现这个接口,但很少说到它在 Angular 表单架构里扮演什么角色,如果不仅仅想知道如何实现,还想知道为什么这样实现,那本文正合的胃口。...本文我将使用原生表单控件术语来区分 Angular 特定的 formControl 和你在 html 使用的表单控件,但需要知道任何一个自定义表单控件都可以和 formControl 指令进行交互,而不是原生表单控件如...,L186 和 L43,以及 L85),需要把更新的值传给这个函数,这样对应的 Angular 表单控件值也会更新(译者注:这一点可以参考 Angular 它自己写的 DefaultValueAccessor...的写法如何把 input 控件每次更新值传给回函数的,L52 和 L89);使用 registerOnTouched 方法来注册用户和控件交互时触发的回(译者注:可能会参考 L95)。...在registerOnChange 里我们简单保存了对回函数 fn 的引用,回函数由 formControl 指令传入的(译者注:参考 L85),只要每次 slider 组件值发生改变,就会触发这个函数

    3.8K20

    浅谈Hooks&&生命周期(2019-03-12)

    生命周期 现在流行的前端框架,无论angular还是React,又或是Angular2以及以上,都由框架自身提供了生命周期(有的叫生命周期钩子)供开发者使用。...ngOnDestroy() 就在Angular破坏指令/组件之前进行清理。取消订阅Observable并分离事件处理程序以避免内存泄漏。在 Angular破坏指令/组件之前 调用。...看到这里,心里可能会有这样的疑问:如果组件中多次使用 useState 怎么办?React 如何“记住”哪个状态对应哪个变量?...React 不知道把 useState 等 Hooks API 返回的结果赋值给什么变量,但是它也不需要知道,它只需要按照 useState 调用顺序记录就好了。...可以理解为会有一个槽去记录状态。 正因为这个原因,Hooks,千万不要在 if 语句或者 for 循环语句中使用!

    3.2K40

    模块化开发 Angular 应用

    所以,即使知道哪些模块或者怎么使用它们,已经无行在应用中使用它们了。其中最突出的 AppModule。 AppModule 应用中的根模块,并且对于运行我们的应用程序必要的模块。...Declarations 在 declarations 数组中,我们定义着所有的组件,指令和管道,我们可以在这个模块内使用。...如果一个组件(或者指令或者管道)并没有添加到 declarations 中,但是又在模块或者应用中使用了angular 应用在运行时报错。此外,一个组件只能在一个模块中声明。...没问题,我们将解决这个问题。即使没有任何模块,仍然需要导入一些 angular 模块。正如我们之前提到的,Angular 在构建之初已经考虑到了模块化。...因为 Angular 还不知道现实哪个组件。为了解决这个问题,我们必须为 authentication module 定义子路由。这看起来集合和 app.routing 完全一样。

    3K10

    Angular开发者手册重点翻译之指令(一)文本和属性绑定ngAttr属性绑定

    非常类似于创建自己的controller和service,可以创建自己的指令个angularjs使用,党angular初始化启动的应用程序,html编译器将遍历的DOM元素并且去匹配指令。...匹配指令 在你可以编写指令之前,需要知道当你使用一个给定的指令的时候,angularjs的html编译器怎样工作的....:model="foo"> Angular规范一个元素标签和属性名去决定哪个元素匹配哪个指令,我们通常使用大小写敏感的驼峰式规范化命名应用指令。...2:使用:/_/-分隔驼峰式的命名。...这个工厂方法只会被在编译器匹配到指令的第一次的时候调用一次,可以在这个时机执行任何的初始化工作,这个方法需要被$compile.invoke调用使得它可以像controller一样可注入的。

    1.7K60

    2Angular JS 学习笔记 – 双向数据绑定和Scope概念

    这个模型单源应用状态(The model is the single-source-of-truth for the application state),大大简化了开发人员的编程模型.可以把视图简单的想成模型的投影...可以从dom元素上使用angular.element(aDomElement).scope()函数获取作用域。查看指令文档了解更多的关于作用域隔离的信息。...与浏览器事件循环的集成: 例子描述angular交互基于浏览器的事件循环。 浏览器的事件循环等待一个事件完成。事件希望交互的 ,时间时间,网络事件。 时间回函数被执行后。...$apply(stimulusFn),stimulusFn希望在Angular上下文中执行的函数。 Angular执行sitimulusFn(),通过修改应用的状态。 Angular进入编译循环。...这个input指令采集指令去修改input的value并且调用$apply去更新angular执行下下文中的应用模型。 Angular 应用 name=”x”到model.

    13.2K20

    吐槽一下 Vue3 的语法设计

    因为有的属性呢,他自定义指令不应该往下传的,但是有的指令呢,又需要往下传 例如事件回 Greet 这个时候我们在学习的时候...就是当我试图使用静态参数类型传递一个静态对象时,怎么着?传不了! 我只能改成动态的绑定写法,才能正常传递。...没办法,虽然我已经知道怎么用了,但是我到现在也不太确定官方文档说的动态属性表达的准确定义啥。...有人说,这个学习成本低,我不太信的。 ✓但是我得说一下,这些,我都学会了,也知道怎么区分怎么用了,非常的熟练,难不到我。但不妨碍我不喜欢这样的设计。...然后另外一个让我觉得非常难受的语法设计就是对于事件回函数的处理。例如我想要通过 @click 传递一个回函数到子组件,但是这个时候,子组件怎么接收这个函数呢?

    14610

    4、Angular JS 学习笔记 – 创建自定义指令

    如果在寻找指令的API,我们最近把他移动到$compile 这个文档解释当我们想要在AngularJS 应用中建立自己的指令时,该如何实现。 什么指令?...我们使用“编译”这个术语的原因指令的递归处理借鉴了编译程序语言编译源代码的过程。 匹配指令 我们写一个指令前,我们需要知道Angular的HTML编译器决定何时使用给定的指令。...AngularJS1.2 采用了ng-repeat-start 和 ng-repeat-end 更好的解决了这个问题。鼓励开发者尽可能的去使用这个在自定义的注视指令上。...举个例子来说,如果创建一个指令可能会在HTML7引入的相同的元素发生而问题。2到3个短的前缀工作的很好。...Angular将调用templateUrl函数基于两个参数,一个指令哪个元素上被调用,和一个attr属性关联相关的元素。

    4.8K20

    Angular学习(01)-架构概览

    组件与模板 在 Angular 中,最常接触的应该就是组件了。 我这么理解的,组件可以是在界面上看到的任何东西,可以是一个页面,可以是页面上的一个按钮。...那么,组件怎么告诉 Angular 的呢? 同样在 Android 项目或者后端项目中,也有一些依赖注入框架,那些通常都是借助注解的方式来实现。...实现这个当然可以在 TypeScript 中去书写这些逻辑,但要应用到每个按钮上,就比较繁琐。...这个时候,就可以将这些工作都封装到指令内部,然后在每个按钮标签上加上该指令Angular 在解析模板时,发现了这个指令,就会为每个按钮都加上这么一段程序逻辑。...指令的原理也很简单,在模板中某个元素标签上,添加上某个指令后,解析到这个指令时,会进入这个指令的相关工作,而指令内部,会获取到一个当前指令挂载的元素标签对象,既然都拿到这个对象了,那么,在指令内部想对这个元素做什么

    3.6K50

    Angular专题】——(1)Angular,孤傲的变革者

    ,它似乎总是在说“这个想法对的,那我们在Angular里实现它吧”,造成的直接结果就是学习曲线异常陡峭,许多初级和中级的开发者浅尝辄止,直接弃坑投奔React和Vue阵营,所有的创新都会面临这样的窘境...,Angularjs1.X中组件化的实现是基于自定义指令的,1-2年经验却未尝试过使用自定义指令的开发者比比皆是,造成的直接结果就是常常一个controller中的代码好几千行,代码里混合着各种DOM操作...如果上面的描述知道如何做,那么就静下心好好查查资料,学习实践一下。如果已经知道怎么实现,那么就可以开启Angular2的学习了,会在其中看到很多很多自己熟悉的东西。 三....我计划这样学习Angular技术栈 说实话,我接触Angular2个礼拜,但是我很喜欢它,严谨,优雅,最重要的VSCode的主题很漂亮。...“学习一个框架,做一个TodoList,然后就没有然后了”,这是很多人对于新技术的学习方式,会发现它其实并没有什么卵用,因为过半个月,就会不记得自己做过什么了(别问我怎么知道的)。

    86020

    实战 | Change Detection And Batch Update

    我们试着看看其余两种情景下state的变化,将点击按钮的逻辑换成如下代码: 打开控制台,点击按钮会发现打印了1 2,相信这个时候很多人就懵了,为啥和第一种情况的输出不一致,不是说好的批量更新的么,怎么变成连续更新了...综上,说setState异步的需要加一个前提条件,在React调用的方法中执行,这时我们需要通过回获取到最新的state 相信这个道理大家不难理解,因为事件和生命周期方法都是React调用的,它想怎么玩就怎么玩...有人可能会疑惑了,我们在编码的时候并没有调用$apply,那么UI怎么更新的呢? 实际上Angular1帮我们调用了,我们看下ng事件的源码实现: 很明显调用了$scope....Angular1通过封装自动调用$apply,但是存在手动调用的场景,为了解决这个问题,Angular2没有采用1的实现机制,转而使用了Zone.js。...Vue并没有这么干,不用于React、Angular1/2捕获异步方法上下文去更新,Vue采用了不同的更新策略。

    3.2K20

    达观数据对AngularJS技术的思考与实践

    通常认为angular用了MVC模型的设计模式(也有争论认为MVW或MVVM),后面涉及到的会较为详细解释。...把 service 传进 controller 之后,在 controller 里这个对象里的属性就可以通过 factory 使用了。 ? 2)Service用"new"关键字实例化的。...把 service 传进 controller 之后,在controller里 "this" 上的属性就可以通过 service 来使用了。 ?...Angular依赖注入的方式: 1)最简单的处理依赖的方法,就是假设函数的参数名就是依赖的名字,给出一个注入器可以通过检查声明来获取函数名,从而知道需要的依赖的函数。 ?...2)$inject标记:要允许压缩类库重命名函数参数,同时注入器又能正确处理依赖的话,函数需要使用$inject属性。这个属性一个包含依赖的名称的数组。

    5.4K150

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

    这是指令的完美渗透工作。 英雄们永远不会知道他们正在被监视。 一边开玩笑,注意两点: Angular指令和组件调用钩子方法。 间谍指令可以提供对不能直接更改的DOM对象的洞察。...显然,不能触摸本地div的实现。 您也不能修改第三方组件。 但是可以监察一个指令。...取消注册此指令在全局或应用服务中注册的所有回。 如果忽视这样做,会冒内存泄漏的风险。...在用户可以做任何事情之前,在这个例子中它被调用了二十次。 大部分初始检查都是由Angular在页面其他地方首次渲染(与数据无关)而触发的。 仅仅通过鼠标移动到另一个输入框就会触发一个呼叫。...内容投影 内容投影一种从组件外部导入HTML内容并将该内容插入组件模板中指定位置的方法。 Angular 1开发人员知道这种技术跨越式的。 考虑以前的AfterView示例中的这种变化。

    6.2K10

    AngularDart 4.0 高级-结构指令

    您将在本指南中学习到星号(*)一种便利的符号,字符串一种微型语法,而不是通常的模板表达式。 Angular这个符号解析成一个围绕宿主元素及其后代的标记。...该指南在谈论其属性以及指令的功能时引用了指令类。 指南在描述如何将指令应用于HTML模板中的元素时引用了属性(attribute)名称。...星号(*)前缀 当然,注意到了指令名称的星号(*)前缀,并想知道为什么它是必要的以及它做了什么。 这里*ngIf英雄存在,则显示hero的名字。 上。 微语法 Angular microsyntax允许您以紧凑友好的字符串配置指令。...指令属性名称应使用lowerCamelCase拼写,并以前缀开头。 不要使用ng。 该前缀属于Angular。 选择适合您或您公司的简短内容。 在这个例子中,前缀my。

    16.1K20

    关于angular和react

    再插上虚拟dom的翅膀,实现了一处代码多平台执行的效果,关键这货性能还不错。但是呢,除了组件以外,这货其他什么功能也没有,需要重新造出所有的缺失的轮子或者选择第三方的轮子。...如果一个大型项目,使用angularjs无疑更可靠。强大的功能带来一定的学习成本,但这一切都是值得的。 而使用react的话,首先需要考虑一个问题,数据怎么管理?用哪个mvc库?...null,'h2' ,document.getElementById 'container' ) 为什么用react ---- 虽然目前react非常之火爆,但说实话,我也不知道在现在环境中用react...这个还得等react-android出来后才知道。...这个问题最致命的。 只能在angular的框架下开发,第三方库要兼容angular都需要做一些工作。

    1.5K10

    Angular 2:Web技术发展的必然选择

    我们知道JavaScript 一门单线程语言。最初开发这门语言的时候,目标只是用来编写简单的客户端脚本,但是随着时间的推移,它的角色发生了很大的转变。...从一开始,Angular 2 就已经把web 的现状考虑在内,所以这个版本的框架使用了最新的语法。...Angular 2 用ES2016 的超集编写的(也就是TypeScript,稍后我们就来学习它),但是Angular 2 也允许开发者使用自己喜欢的语言去写代码。...作为Angular 开发者,我们都知道指令API 有多么强大而复杂。...在监视器回函数内部,Angular 经常直接操作DOM,从而无法把监视器移到WebWorker 中去,因为WebWorker 在独立的上下文中被调用的,无法直接访问DOM。

    1.8K10

    Angular 2 + 折腾记 :(1)初识Angular-cli及脱坑要点

    ---- 什么Angular-cli 简言之:就是NG团队自行维护的一个`脚手架`[内置单元测试及webpack2打包工具等] -- 这货前身ember-cli; 官网:cli.angular.io.../ Github: github.com/angular/ang… npm: www.npmjs.com/package/ang… 我最早从beta18开始用的,截止beta28.3 -- 这个分支已经废弃...,已经迁移,之前npm install angular-cli不推荐; 目前最新的v1.0.0正式版【2017-3-24】;从旧版本到rc期间坑了太多次,每次升级各种酸爽; rc2开始基本变化不大,可以直接拿来用了.../cli -- 无压力过墙的孩子推荐 或者 cnpm install -g @angular/cli@v1.0.0-rc.2 -- 国内淘宝源(cnpm的安装自行搜索) 或者 yarn add global...有时候我们想要改源文件或者看到原始配置怎么样的这货就用到了 ---- 生成的目录树小解释 ? ---- 总结 这个脚手架支持sass和less,手动改下.angular-cli.json就可以了。

    1.8K10

    AngularDart4.0 指南-体系结构概述 顶

    = null" [hero]="selectedHero"> 虽然这个模板使用了典型的HTML元素,如和,但它也有一些不同之处。...建筑外包必须添加元数据到你的代码,以便Angular知道怎么做。 数据绑定 如果没有框架,您将负责将数据值推送到HTML控件中,并将用户响应转化为操作和值更新。...指令 ? Angular模板动态的。 当Angular呈现它们时,它根据指令给出的指示转换DOM。 指令一个带有@Directive注解的类。...当然,也可以编写自己的指令。 像HeroListComponent这样的组件一种自定义指令。 服务 ? 服务一个广泛的类别,包含您的应用程序所需的任何值,功能或特征。...但它并不包括需要知道的一切。 以下其他重要的Angular功能和服务的简短字母顺序列表。 Forms:支持基于HTML验证和脏检查的复杂数据录入方案。

    7.9K30
    领券