angular组件间的数据输入——input

原文链接:angular组件间的数据输入——input – 每天进步一点点

0.背景

我们前面一篇文章简单介绍了angular如何引用其他组件,这篇文章简单介绍一下angualr组件之间如何传输数据。

一个使用场景:

我们定义了一个学生组件,学生有自己的姓名、年龄,语文成绩、数学成绩、英语成绩,然后其他地方调用学生组件。

那么会有一个问题,我们可能在很多地方调用学生组件,但是每个学生的姓名年龄不一定相同,如果我们都传入同样的名字那么学生组件显示的时候就一模一样了,为了解决这个问题,我们可以:

1.学生组件内置网络请求,每次打开组件都去后台请求数据然后渲染组件(但是至少要有一个具体的学生标记,比如我们前面说的路由跳转那种,但路由跳转是跳转到新页面,不符合我们要求)

2.组件之间传递参数

我们下面主要说 组件之间如何传递参数

1.input组件传参

我们执行

ng g c student

创建一个学生组件,

HTML文件参考:

<div>
<h1>学生姓名:{{name}}</h1>
<h2>学生年龄:{{age}}</h2>
<h2>语文成绩:{{score.chinese}}</h2>
<h2>数学成绩:{{score.math}}</h2>
<h2>英语成绩:{{score.english}}</h2>
</div>

ts文件参考:

import { Component, Input, OnInit } from '@angular/core';
 
@Component({
selector: 'app-student',
templateUrl: './student.component.html',
styleUrls: ['./student.component.css']
})
export class StudentComponent implements OnInit {
@Input() name:string //学生姓名
@Input() age:number //学生年龄
//成绩
@Input() score:{
chinese:number //语文成绩
math:number //数学成绩
english:number //英语成绩
}
 
constructor() { }
ngOnInit() {
}
}

我们参考上面的方式定义了一个学生组件,参数有name,age和score对象。

然后我们在需要的地方引入组件,参考下面这样:

然后运行项目后,页面显示如下:

这是因为我们没有student组件传递参数

我们可以参考下面的方式给student组件传递参数:

<app-student
name="张三"
age="14"
[score]="{
chinese:12,
math:143,
english:34
}"
></app-student>

对象形式要加“[]”

这种形式我们可以在html中直接传递参数,效果如下:

但是上面这种形式一般不用于实际开发,我们很少在html中直接传递参数, 一般用变量来传递,那么其实很简单,我们在app组件中定义下面这些变量

  myName='李四'
  myAge=14
  myScore={
    myChinese:95,
    myMath:113,
    myEnglish:54,
  }

然后在HTML中参考下面这样引用就能正常使用了

<app-student
[name]="myName"
[age]="myAge"
[score]="{
chinese:myScore.myChinese,
math:myScore.myMath,
english:myScore.myEnglish
}"
></app-student>

效果跟上面类似。

 

posted on 2024-11-07 14:53  longkui  阅读(9)  评论(0编辑  收藏  举报

导航