环境: angular cli: 11.0.6 angular: 11.0.7 node: 12.18.3 npm : 6.14.6 ide: visual studio code
组件之间传递数据,最主要的就是父子组件之间传递数据, 例如:
父组件传入数据给子组件,同时,子组件数据发生变化是,希望能够通知父组件。
angular 中,@input() 和 @output() 为子组件提供了一种与其父组件通信的方法。 @input() 允许父组件更新子组件中的数据。相反,@output() 允许子组件向父组件发送数据。
父传子 @input()
1. 子组件定义@input()
子组件中的 @input() 装饰器表示该属性可以从其父组件中获取值。【相关教程推荐:angular教程、编程教学】
例如:
export class childcomponent { @input() message: string; }
增加@input() 装饰器的变量,除了数据可以从父组件传入后,其他逻辑和普通变量一致;
子组件的html代码中,既可使用message这个变量, 例如:
parent says: {{message}}
2. 父组件传递变量给子组件
当父组件调用子组件时,可以把父组件的变量(如messagetochild
) 传递给子组件
子组件中,可以更改
message
这个传入的变量,但是其作用域只在子组件中,父组件拿不到更改后的结果。(如何传给父组件,请接着看)
子传父 @output()
angular通过事件(event)来实现子组件通知父组件数据的改变,父组件需要订阅该事件。
1. 子组件定义@output
子组件定义@output
export class childcomponent { // eventemitter ,这意味着它是一个事件 // new eventemitter() - // 使用 angular 来创建一个新的事件发射器,它发出的数据是 string 类型的。 @output() newitemevent = new eventemitter (); addnewitem(value: string) { this.newitemevent.emit(value); } }
子组件当数据发生变化时,调用这个addnewitem
方法既可。例如,html中
2. 父组件订阅事件
1、父组件的ts代码中,增加一个处理上面事件的方法,例如
additem(newitem: string) { // logic here }
2、父组件的html中,订阅该事件。
事件绑定 (newitemevent)='additem($event)'
会把子组件中的 newitemevent 事件连接到父组件的 additem() 方法。
总结
使用@input() 和 @output() 可以很方便的实现父子组件之间的数据传递、共享。
可以同时使用 @input() 和 @output()
更多编程相关知识,请访问:编程视频!!
以上就是一文详解angular父子组件间传数据的方法的详细内容,更多请关注其它相关文章!