亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Angular中實現不同組件間的數據傳遞

發布時間:2021-02-19 16:52:03 來源:億速云 閱讀:265 作者:Leah 欄目:web開發

怎么在Angular中實現不同組件間的數據傳遞?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

利用Angular Event在不同組件之間傳遞數據

為了實現在Angular不同Component之間相互傳遞數據,可以使用Event分發的思路來實現。

使用事件實現在不同組件之前傳遞數據的思路如下:

  • 定義一個服務,用來實現事件的發布和訂閱方法。

  • 組件A注入事件服務的依賴,將自己要傳遞數據的數據以事件的形式發布出去。

  • 組件B注入事件服務的依賴,并訂閱相關事件。

定義一個服務

在終端輸入

ng g service event

Angular會自動在項目的app目錄下生成 event.service.ts 和 event.service.spec.ts 兩個文件。

我們在 event.service.ts 文件中完成相關業務代碼即可。

例如,我們在改服務中實現發布事件和訂閱事件的方法:

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

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

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

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

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

利用EventService在不同組件間傳遞數據

假定組件A中的數據需要傳遞到組件B中,這里的數據可以是事件、文本內容、狀態改變等等東西。 則在組件A中,我們可以發布一個事件,組件B訂閱該事件即可。

在組件A中發布事件

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

在組件B中訂閱事件

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

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武平县| 封丘县| 茂名市| 阿克陶县| 屯留县| 延庆县| 咸阳市| 城口县| 湘阴县| 双鸭山市| 武功县| 柞水县| 定安县| 平乐县| 娱乐| 邵武市| 遂溪县| 思茅市| 绥棱县| 五寨县| 柘城县| 襄城县| 无为县| 凤城市| 龙口市| 伊吾县| 泌阳县| 讷河市| 永修县| 冀州市| 财经| 毕节市| 五莲县| 晋中市| 揭阳市| 即墨市| 清原| 龙门县| 孝义市| 安乡县| 宁城县|