當前位置:
首頁 > 最新 > Angular 中自定義 toJSON 操作符

Angular 中自定義 toJSON 操作符

如果對 RxJS 的 operators (操作符) 不熟悉的話,建議讀者在閱讀本文時,先閱讀RxJS - Observables, observers 和 operators 簡介這篇文章。

基礎知識什麼是 Operator

Operator 是一個函數,它接收一個 Observable 對象,然後返回一個新的 Observable 對象。當我們訂閱新返回的 Observable 對象時,它內部會自動訂閱前一個 Observable 對象。

如何為 Observable 添加操作符

比較常見的有以下三種方式:

1.使用 ES7 函數綁定運算符 (可使用BabelJS進行轉換)

someObservable::mySimpleOperator(x => x + ! );

2.繼承 Observable 類,並重寫 方法

class MyObservable extends Observable { lift(operator) { const observable = new MyObservable(); // res.json());

對於每個介面,我們都需要調用 map 操作符對返回的數據做對應的處理。那能不能簡化這個操作呢?答案是有的,我們可以通過自定義一個 toJSON 操作符來簡化上述的過程。具體實現如下:

function toJSON(): Observable { return this.map(( response : Response ) => response.json()); }

上面代碼中, 指向源 Observable 對象,即調用 http 對象的 方法後返回的 Observable 對象。此外我們直接返回了調用 操作符後新建的 Observable 對象。

為了能夠使用我們自定義的 操作符,我們需要把它添加到 Observable 的原型對象上:

最後的一件事是我們需要添加以下的定義:

declare module "rxjs/Observable" { interface Observable { toJSON : typeof toJSON; } }完整示例custom-operators.tsapp.module.tsimport { BrowserModule } from @angular/platform-browser ; import { NgModule } from @angular/core ; import { HttpModule } from "@angular/http"; import { AppComponent } from ./app.component ; import ./custom-operators ; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, HttpModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }app.component.tsimport { Observable } from rxjs/Observable ; import { Component, OnInit } from @angular/core ; import { Http } from @angular/http ; import rxjs/add/operator/map ; interface Member { id: string; login: string; avatar_url: string; } @Component({ selector: app-root , template: ` Angular Orgs Members

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 推酷 的精彩文章:

InnoDB undo日誌與歷史系統基礎
為什麼我會選擇 React 而不是 Vue?–Steven Poulton–Medium
詳解 DNN 在聲學應用中的模型訓練
富士 TIARA II,高顏值小巧的膠片隨身機

TAG:推酷 |

您可能感興趣

Promise介面是AngularJS組織API的基礎
AngularJS中的MVC模式
Angular 6 LazyLoading 變化
AngularJS篇 1.AngularJS不入門
Angular、React 當前,Vue.js 優劣幾何?
Vue.js 為何能逆襲 Angular 和 React 而主導前端?
使用 Angular CLI 搭建項目
容器化分散式日誌組件ExceptionLess的Angular前端UI
Angular 6 正式發布:統一框架、Material和CLI 三大模塊
Angular和Vue.js 深度對比
Google的Angular 迫使我放棄了 Web 開發
前端基於angular6的ionic3,後端基於springmvc post get請求實現
Angular.js 發布,Web 前端框架
angularjs 點擊div外面,隱藏該div
使用 Angular 5.0和Spring Boot 2.0 構建一個基本的 CRUD 應用
乾貨 Angular組件測試
Angular 8正式發布!
如何用Angular5創建一個PWA項目
Web 前端框架 Angular 發布 7.0 首個 beta 版
前端圈小可愛Vue的自白:我年少成名卻又屢陷React、Angular混戰