1.输入属性。

游戏机本身就是一个黑盒模型,我们看不到游戏机内部是如何运转的,只暴露两个手柄,不关心游戏机谁来恩手柄,游戏机只关心一件事,摁A显示什么,摁B显示什么。就像它不关心谁摁手柄输入信息,也不关心谁看屏幕输出,甚至有没有看都无所谓。 规定输入的格式(手柄),输出外面可能会感兴趣的东西。

我们的组件就是要设定成一个黑盒模型,如果一个组件要从外部接收一些东西,应该用输入属性声明它需要的东西,至于这些东西从哪里来,组件不需要知道。只需要知道需要的东西外部提供之后需要怎么做,一个组件 想把外部世界可能感兴趣的东西告诉外部世界,应该通过输出属性来设事件,至于这些事件发射给谁,组件也不需要知道,那些对组件发射东西感兴趣的东西应该自己来订阅组件发射的事件。

组件的输入属性是指被input装饰器注解的属性,用来从父组件接收数据。

场景很简单,在父组件里输入我想买的股票的名字,通过输入属性,传给子组件,子组件显示出来

步骤1:ng g component order ;
在order子组件里定义输入属性

  /*输入属性等着父组件给它传值*/
  @Input()
  stockCode: string; // 股票代码
  @Input()
  amount: number; // 股票数量

步骤2:order组件的html

<p>子组件</p>
<div>买{{amount}}手{{stockCode}}股票</div>

步骤3: 父组件app.component.ts中定义stock

 stock: ''; // 输入的股票代码默认是一个空的就可以

步骤4: app.component.html

<p>父组件</p>
<!--双向绑定,输入框输入会改变stock的值,--> 
<input type="text" placeholder="请输入股票代码" [(ngModel)]='stock'> 
<app-order [stockCode]="stock" [amount]="100"></app-order>
<!--展示子组件的内容,父组件的stock属性通过输入属性传给子组件的stockCode.-->

效果:
image.png

注意:

1.一定记得写input装饰器

2.属性绑定是单向的, 只能父组件值改变影响子组件,子组件改变值,不会影响父组件。

 constructor() {
    setInterval(() => {
      this.stockCode = 'Apple';
    }, 3000);
  }

效果:
image.png

比较下输入属性和路由传递参数传递

输入属性:是通过属性来传递数据的,这种传递只能在由父子关系的组件间从父组件给子组件传递数据。(父组件模板引用另一个形成的父子组件关系才能传递)

路由参数:我们是通过构造函数传递的,在构造函数依赖注入一个ActivatedRoute这样类型的对象进来,通过这个对象的参数快照或参数订阅来获取外面传入的参数。通过路由来往组件里传递数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,118评论 6 342
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,419评论 18 399
  • 在《倚天屠龙记》中,殷梨亭和纪晓芙的爱情其实几乎没有产生,只是用来反衬纪晓芙对杨逍的感情;而殷梨亭和纪杨之女杨不悔...
    书生慧慧子阅读 13,597评论 4 3
  • 有些人,不是你想忘记就能忘记,想不去理会就不会存在。那就像一颗种子,不痛不痒地稍有不慎落在心底,生根了,发芽了,不...
    背丶影阅读 2,958评论 0 2

友情链接更多精彩内容