美文网首页
angular4学习笔记整理(四)组件间通讯、管道

angular4学习笔记整理(四)组件间通讯、管道

作者: SHpoi | 来源:发表于2018-01-12 21:34 被阅读0次

之后的笔记就写的快一点

组件间通讯

1.组件间通讯 。
父组件向子组件输入属性用
<app-order [stockCode]="stock" [amount]="100"></app-order>
子组件声明接收父组件的属性@input()注解

@Input()
amount: number;

2.组件输出属性

1.在发射的组件内部定义发射的EventEmitter对象

@Output()
lastPrice: EventEmitter<PriceQuote> = new EventEmitter();

2.在发射组件里 将要发射的变量发射出去 ,注意类型必须和定义里的泛型一致

let pq = new PriceQuote(this.stockCode, Math.random() * 100);
this.lastPrice.emit(pq);

3.在发射组件标签声明的地方加上监听该emitEvent对象传过来的事件

<app-price-quote (lastPrice)="priceQuoteHandler($event)"></app-price-quote>

然后父组件里就可以写,事件就是发射过来的值

priceQuoteHandler(priceQuote) {
  this.priceQuote = priceQuote;
}

注意想监听事件的名字即不是lastPrice 只要在output里改即可

@Output('priceChange')

但是这样有感觉很麻烦,能不能用双向绑定

还有注意 如果一个属性想用双向绑定 那么如果输入属性为rating ,并且想在标签上[(rating)],获取输出值那么在组件内的输出属性 名称必须为ratingChange ,加个Change

@Output()
private ratingChange: EventEmitter<number> = new EventEmitter();

管道

普通应用,这个使用可以去查官网

<p>{{birthday | date : 'yyyy-MM-dd HH:mm:ss'}}</p>
<p>{{pi | number: '2.2-4'}}</p>

自定义管道需命令行生成 ng g pipe name
管道和组件一样需申明在NgModule里

declarations: [
  FilterPipe
],

自定义管道

import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
  name: 'filter'
})
export class FilterPipe implements PipeTransform {
  transform(list: any[], filterField: string, keyword: string): any {
    if (!filterField || !keyword) {
      return list;
    }
    return list.filter( item => {
      let fieldVaule = item[filterField];
      return fieldVaule.indexOf(keyword) >= 0;
    });
  }
}

如何在父组件中调用子组件的方法

子组件就一个gretting的方法

父组件html代码
<app-children #child1></app-children>
<app-children #child2></app-children>
<button (click)="child2.gretting('jsex')">hahah1</button>

父组件ts代码

import { Component, OnInit, ViewChild} from '@angular/core';
import {ChildrenComponent} from './children/children.component';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit,{
  @ViewChild('child1')
  child1: ChildrenComponent;
  greeting: string = 'heelo';
  ngOnInit(): void {
    this.child1.gretting(this.greeting);
  }
}

1.在ts中调用子组件方法
html里

<app-children #child1></app-children>

ts里

@ViewChild('child1')
child1: ChildrenComponent;

父组件ts任意地方就可以

this.child1.gretting(this.greeting);

2.在html里调用子组件api

<app-children #child2></app-children>
<button (click)="child2.gretting('jsex')">hahah</button>

相关文章

  • angular4学习笔记整理(四)组件间通讯、管道

    之后的笔记就写的快一点 组件间通讯 1.组件间通讯 。父组件向子组件输入属性用 子组件声明接收父组件的属性@in...

  • angular4 (4)组件间通讯

    <1>输入属性 定义:组件的输入属性,是指被@input装饰器注解的属性,用来从父组件接收数据 实例1.新建ord...

  • 四 组件间的通讯

    组件都是独立封闭的props主要的作用和功能就是接收传递给组件的数据,只读不能修改传递数据都是通过属性来传递 接收...

  • Android Binder

    Binder整理 1、IPC: 进程间通讯或者夸进程通信windows ipc方式:剪贴板、管道、邮槽等等linu...

  • Angular4中常用管道

    整列一下angular4中常用管道,欢迎喜欢angular4的小伙伴一起交流沟通补充。 一、大小写转换管道 upp...

  • angular2 组件之间传值及事件传递

    简介 angular2及以后的版本(包括angular4)都称为angular。组件之间的传值主要分为父子组件间传...

  • 系统编程-------进程间通讯

    进程间通讯 pipe, 亲属间进程通讯, 参数: pipedfd :用于接收pipe函数创建的管道文件的读写...

  • Java IO学习笔记五

    管道流 管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream)、管道输入...

  • 13 进程间通讯: 管道

    管道### 【11 章中,我们看到一种在两个进程间发送消息的非常简单的方法: 使用信号;我们创建通知事件,通过它引...

  • Vue学习笔记入门篇——组件的通讯

    本文为转载,原文:Vue学习笔记入门篇——组件的通讯组件意味着协同工作,通常父子组件会是这样的关系:组件 A 在它...

网友评论

      本文标题:angular4学习笔记整理(四)组件间通讯、管道

      本文链接:https://www.haomeiwen.com/subject/dlkqoxtx.html