0

0

Angular 组件间数据传递:使用 @Input 装饰器

花韻仙語

花韻仙語

发布时间:2025-10-03 11:12:01

|

308人浏览过

|

来源于php中文网

原创

angular 组件间数据传递:使用 @input 装饰器

本文详细介绍了 Angular 中父组件向子组件传递数据的常用方法,重点讲解了如何使用 @Input 装饰器实现数据绑定。通过示例代码,读者可以清晰地理解如何定义输入属性,以及如何在子组件中访问和使用父组件传递的数据,并避免常见错误。

在 Angular 应用开发中,组件化是一种常见的架构模式。组件之间经常需要进行数据传递。本文将重点介绍如何使用 @Input 装饰器,将数据从父组件传递到子组件。

使用 @Input 装饰器

@Input 装饰器允许子组件接收来自父组件的数据。要使用它,需要在子组件的类中声明一个带有 @Input 装饰器的属性。

示例:

假设我们有一个 AppComponent 作为父组件,它包含一个 images 数组,我们希望将 images 数组中的每个 image 对象传递给 CardComponent 子组件。

父组件 (AppComponent):

赣极购物商城网店建站软件系统
赣极购物商城网店建站软件系统

大小仅1兆左右 ,足够轻便的商城系统; 易部署,上传空间即可用,安全,稳定; 容易操作,登陆后台就可设置装饰网站; 并且使用异步技术处理网站数据,表现更具美感。 前台呈现页面,兼容主流浏览器,DIV+CSS页面设计; 如果您有一定的网页设计基础,还可以进行简易的样式修改,二次开发, 发布新样式,调整网站结构,只需修改css目录中的css.css文件即可。 商城网站完全独立,网站源码随时可供您下载

下载
import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'shopping-cart';

  images = [
    {
      title: 'At the beach',
      url: 'https://images.unsplash.com/photo-1507525428034-b723cf961d3e?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1173&q=80',
    },
    {
      title: 'At the forest',
      url: 'https://images.unsplash.com/photo-1448375240586-882707db888b?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80',
    },
    {
      title: 'At the City',
      url: 'https://images.unsplash.com/photo-1449824913935-59a10b8d2000?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80',
    },
    {
      title: 'At the Snow',
      url: 'https://images.unsplash.com/photo-1517299321609-52687d1bc55a?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80',
    },
  ];
}


在父组件的模板中,我们使用 *ngFor 循环遍历 images 数组,并将每个 image 对象通过 [image]="image" 绑定到 app-card 组件的 image 属性上。

子组件 (CardComponent):

import { Component, Input, OnInit } from '@angular/core';

@Component({
  selector: 'app-card',
  templateUrl: './card.component.html',
  styleUrls: ['./card.component.css'],
})
export class CardComponent implements OnInit {
  @Input() image: any = {};

  constructor() {}

  ngOnInit(): void {
    console.log(this.image);
  }
}

@@##@@
{{image.title}}

在子组件的类中,我们使用 @Input() image: any = {} 声明了一个名为 image 的输入属性。@Input() 装饰器告诉 Angular,这个属性可以从父组件接收数据。 image: any = {} 定义了 image 属性的类型为 any,并设置了一个默认值 {},这可以避免在数据加载完成之前出现错误。

在子组件的模板中,我们可以使用 image.url 和 image.title 来访问父组件传递过来的 image 对象的属性。 使用 *ngIf="image" 可以确保在 image 对象存在时才渲染 card 组件,避免在数据加载完成之前出现错误。

注意事项

  • 类型定义: 建议为 @Input 属性定义明确的类型,以提高代码的可读性和可维护性。
  • 默认值: 可以为 @Input 属性设置默认值,以避免在父组件没有传递数据时出现错误。
  • 别名: 可以为 @Input 属性设置别名,例如 @Input('image') cardImage: any,这样在父组件的模板中可以使用 [image]="image",而在子组件的类中使用 this.cardImage。

总结

@Input 装饰器是 Angular 中父组件向子组件传递数据的常用方法。通过合理地使用 @Input 装饰器,可以构建清晰、可维护的组件结构。 记住,在子组件中访问输入属性时,要确保数据已经加载完成,并根据需要设置默认值或使用 *ngIf 指令。

Angular 组件间数据传递:使用 @Input 装饰器

相关专题

更多
点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

180

2023.11.24

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

97

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

51

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

139

2026.01.09

学python网站汇总
学python网站汇总

本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。

12

2026.01.09

python学习网站
python学习网站

本专题整合了python学习相关推荐汇总,阅读专题下面的文章了解更多详细内容。

19

2026.01.09

俄罗斯手机浏览器地址汇总
俄罗斯手机浏览器地址汇总

汇总俄罗斯Yandex手机浏览器官方网址入口,涵盖国际版与俄语版,适配移动端访问,一键直达搜索、地图、新闻等核心服务。

83

2026.01.09

漫蛙稳定版地址大全
漫蛙稳定版地址大全

漫蛙稳定版地址大全汇总最新可用入口,包含漫蛙manwa漫画防走失官网链接,确保用户随时畅读海量正版漫画资源,建议收藏备用,避免因域名变动无法访问。

432

2026.01.09

php学习网站大全
php学习网站大全

精选多个优质PHP入门学习网站,涵盖教程、实战与文档,适合零基础到进阶开发者,助你高效掌握PHP编程。

49

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

CSS教程
CSS教程

共754课时 | 18.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号