最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Angular事件之不同組件間傳遞數(shù)據(jù)的方法

 更新時(shí)間:2018年11月15日 11:37:22   作者:程屁凹  
這篇文章主要介紹了Angular事件之不同組件間傳遞數(shù)據(jù)的方法,利用Angular Event在不同組件之間傳遞數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

利用Angular Event在不同組件之間傳遞數(shù)據(jù)

為了實(shí)現(xiàn)在Angular不同Component之間相互傳遞數(shù)據(jù),可以使用Event分發(fā)的思路來實(shí)現(xiàn)。

使用事件實(shí)現(xiàn)在不同組件之前傳遞數(shù)據(jù)的思路如下:

  • 定義一個(gè)服務(wù),用來實(shí)現(xiàn)事件的發(fā)布和訂閱方法。
  • 組件A注入事件服務(wù)的依賴,將自己要傳遞數(shù)據(jù)的數(shù)據(jù)以事件的形式發(fā)布出去。
  • 組件B注入事件服務(wù)的依賴,并訂閱相關(guān)事件。

定義一個(gè)服務(wù)

在終端輸入

ng g service event 

Angular會(huì)自動(dòng)在項(xiàng)目的app目錄下生成 event.service.ts 和 event.service.spec.ts 兩個(gè)文件。

我們?cè)?event.service.ts 文件中完成相關(guān)業(yè)務(wù)代碼即可。

例如,我們?cè)诟姆?wù)中實(shí)現(xiàn)發(fā)布事件和訂閱事件的方法:

import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class EventService {
  // 構(gòu)建Subject的實(shí)例,用來完成事件的發(fā)布和訂閱
  private subject = new Subject < any > ();
  constructor() {}
  publish(value: any, err: any) {
    if (value !== undefined) {
      // 將新的事件放入next隊(duì)列中
      this.subject.next(value);
    }
    if (err !== undefined) {
      // 將錯(cuò)誤放入error隊(duì)列
      this.subject.error(err);
    }
    // 表示當(dāng)前事件結(jié)束
    this.subject.complete();
  }

  subcribe(handler: {
   next: (value) => void,
   error: (err) => void,
   complete: () => void
  }) {
    this.subject.asObservable().subcribe(handler);
  }
}

最后,為了能讓我們定義的服務(wù)能夠被注入到其他組件中,我們還需要在app.modules.ts文件中注冊(cè)我們的服務(wù):

@NgModule({
 declarations: [],
 imports: [],
 providers: [EventService],
 bootstrap: [AppComponent]
})
export class AppModule { }

利用EventService在不同組件間傳遞數(shù)據(jù)

假定組件A中的數(shù)據(jù)需要傳遞到組件B中,這里的數(shù)據(jù)可以是事件、文本內(nèi)容、狀態(tài)改變等等東西。 則在組件A中,我們可以發(fā)布一個(gè)事件,組件B訂閱該事件即可。

在組件A中發(fā)布事件

export class AComponent implements OnInit {
 constructor(
  private event: EventService
 ) { }
 ngOnInit() {
 }
 someThingChanged(data) {
  // 發(fā)布事件
  this.event.publish({
   // 可以定義一個(gè)事件類型,實(shí)現(xiàn)多個(gè)不同類型事件的發(fā)布
   type: 'event_type_you_want_define',
   // 可以攜帶任何數(shù)據(jù),并通過事件發(fā)布出去
   data: data,
   ohter: 'ohter things you want to pass out'
  }, err);
 }
}

在組件B中訂閱事件

export BComponent implements OnInit {
 constructor(
  private event: EventService
 ) { }
 ngOnInit() {
   // 在初始化方法中,可以完成對(duì)事件的訂閱工作
  this.event.subject({
   next: value => {
    // 可以通過約定事件類型,在這里進(jìn)行檢查,從而完成不同的邏輯
    // do something with value
   },
   error: err => {
    // handle err
   },
   complete: () => {
    // handle complete
   }
  })
 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • angular2 NgModel模塊的具體使用方法

    angular2 NgModel模塊的具體使用方法

    這篇文章主要介紹了angular2 NgModel模塊的具體使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • AngularJS extend用法詳解及實(shí)例代碼

    AngularJS extend用法詳解及實(shí)例代碼

    這篇文章主要介紹了AngularJS extend用法詳解的相關(guān)資料,并附實(shí)例代碼,幫助大家學(xué)習(xí)理解,需要的朋友可以參考下
    2016-11-11
  • Angular2學(xué)習(xí)筆記——詳解NgModule模塊

    Angular2學(xué)習(xí)筆記——詳解NgModule模塊

    這篇文章主要介紹了Angular2學(xué)習(xí)筆記——詳解NgModule模塊,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • AngularJS中如何使用echart插件示例詳解

    AngularJS中如何使用echart插件示例詳解

    之前因?yàn)轫?xiàng)目的需求,第一次系統(tǒng)的使用了angular這一優(yōu)秀的js框架,其所擁有的許多優(yōu)秀特性極大的方便了項(xiàng)目的開發(fā),然而在開發(fā)中也遇到過不少的問題,趁著最近有時(shí)間給大家總結(jié)一下,這篇文章將會(huì)介紹使用angularjs1結(jié)合百度的圖表插件echart作為例子用以演示。
    2016-10-10
  • Angular2進(jìn)階之如何避免Dom誤區(qū)

    Angular2進(jìn)階之如何避免Dom誤區(qū)

    這篇文章主要介紹了Angular2進(jìn)階之如何避免Dom誤區(qū),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • AngularJS發(fā)送異步Get/Post請(qǐng)求方法

    AngularJS發(fā)送異步Get/Post請(qǐng)求方法

    今天小編就為大家分享一篇AngularJS發(fā)送異步Get/Post請(qǐng)求方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 利用VS Code開發(fā)你的第一個(gè)AngularJS 2應(yīng)用程序

    利用VS Code開發(fā)你的第一個(gè)AngularJS 2應(yīng)用程序

    這篇文章主要給大家介紹了關(guān)于利用VS Code如何開發(fā)你的第一個(gè)AngularJS 2應(yīng)用程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面來一起看看吧。
    2017-12-12
  • Angular2 (RC5) 路由與導(dǎo)航詳解

    Angular2 (RC5) 路由與導(dǎo)航詳解

    這篇文章主要介紹了Angular2 (RC5) 路由與導(dǎo)航的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • angular inputNumber指令輸入框只能輸入數(shù)字的實(shí)現(xiàn)

    angular inputNumber指令輸入框只能輸入數(shù)字的實(shí)現(xiàn)

    這篇文章主要介紹了angular inputNumber指令輸入框只能輸入數(shù)字的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 詳解AngularJS中自定義過濾器

    詳解AngularJS中自定義過濾器

    過濾器(filter)正如其名,作用就是接收一個(gè)輸入,通過某個(gè)規(guī)則進(jìn)行處理,然后返回處理后的結(jié)果。主要用在數(shù)據(jù)的格式化上,例如獲取一個(gè)數(shù)組中的子集,對(duì)數(shù)組中的元素進(jìn)行排序等
    2015-12-12

最新評(píng)論

河北区| 哈密市| 台南县| 海兴县| 饶平县| 台安县| 太谷县| 宜良县| 丰顺县| 汉中市| 旅游| 上虞市| 聊城市| 浦城县| 昌邑市| 武鸣县| 利津县| 安远县| 深水埗区| 临泉县| 耿马| 绥江县| 兴文县| 新泰市| 福安市| 锡林郭勒盟| 临武县| 达拉特旗| 广德县| 寻甸| 义马市| 新闻| 凤凰县| 平罗县| 古田县| 专栏| 龙口市| 雅安市| 巴林左旗| 兴文县| 潞西市|