6.1组件间通讯

输入属性(父组件 → 子组件)

使用@Input注解可以声明一个输入属性。声明输入属性可以理解为自定义属性

@Input()
stockCode:string;

实战

假设存在两组件,分别为父组件app和子组件app-order,在父组件app的模板中使用了子组件app-order,若父组件希望读取input中的输入值,将其传递给子组件并显示,应如何编码?

  1. 定义一个具有stockCode输入属性的order子组件,

  2. 在app组件中使用order组件,

  3. 并将app组件中一个input标签的值传给stockCode输入属性。

子组件

order组件模板代码:

<p>order子组件:{{stockCode}}</p>

order组件控制器代码:

@Input()
stockCode: string;

父组件

app组件模板代码:

app组件控制器代码:

处理通过输入属性传递数据,还可以通过路由参数传递数据 使用路由参数传递数据需要注入:routeInfo: ActivatedRoute

输出属性(子组件 → 父组件)

声明一个输出属性可以理解为自定义事件。

  • 定义输出属性

    当@Output()括号内为空时,默认“自定义事件名称”为“自定义事件名”

  • 发射自定义事件

  • 父组件中使用自定义事件接受返回值

    实战:新建一个具有priceChange输出属性的price-quote组件。priceChange事件中包含实时变化的数字。app组件需要获取到这个数字并显示

    price-quote组件控制器代码

app组件模板代码

app组件控制器代码

中间人模式

编写组件时要考虑可重用性,要解耦。故先考虑好那些组件要重用,需要那些中间人,然后再写代码。

Json.stringfy

Last updated

Was this helpful?