2017-04-12 17 views
0

Observableチェーンを通過した後、私はangle2の私のカスタムクラスに奇妙な問題が発生しました。Observableチェーンで渡された後、クラスにメソッドがありません

私はいつものエラーが表示されます。

EXCEPTION: f.mapToParams is not a function 
ORIGINAL STACKTRACE: 
TypeError: f.mapToParams is not a function 
    at SafeSubscriber._next (filter.component.ts) 
    ... 
Uncaught TypeError: f.mapToParams is not a function 
    at Safesubscriber._next (filter.component.ts) 

ここに私のコードは次のとおりです。

filter.ts:

import { Params } from '@angular/router'; 

export class Filter { 
    public text:String = ''; 
    public mapToParams():Params { 
    let params:Params = {}; 
    // Do some mapping here... 
    return params; 
    } 
} 

filter.component.ts

import { Component, OnInit Output, EventEmitter } from '@angular/core'; 
import { Router, Params } from '@angular/router'; 
import { Filter } from './filter'; 
import { Observable, Subject } from 'rxjs/Rx'; 

export class FilterComponent implements OnInit { 

    private _filter:Filter; 
    private _filterStream = new Subject<Filter>(); 

    ngOnInit() { 
    this._filter = new Filter(); 
    this._filterStream 
     .debounceTime(300) 
     .switchMap((f:Filter) => Observable.of(f)) 
     .subscribe((f:Filter) => { 
     let params:Params = {}; 
     console.log(f.text);   // <-- No problem here 
     // params = this._map(f);   // <-- This would work 
     params = f.mapToParams();  // <-- Here occurs the error 
     }); 
    } 

    private _map(f:Filter):Params { 
    // Do some mapping here 
    } 

    public onInputChanged(searchText:String):void { 
    this._mergeFilter({ 
     map(f:Filter) { 
     f.text = searchText; 
     } 
    }) 
    } 

    private _mergeFilter(callback:FilterMergeCallback):void { 
    let f:Filter = JSON.parse(JSON.stringify(this._filter)); 
    callback.map(f); 
    this._filterStream.next(f); 
    } 

} 

私は0をコメントアウトしようとしましたとswitchMapというステートメントですが、成功しません。

私のコーディングの別のポイントで、filter.mapToParamsメソッドを問題なく呼び出すことができます。 Observableチェーンが私のオブジェクトからすべてのメソッドを取り除くように思えます。共通/角度@1.0.0.-beta.32.3

  • :角度/ CLI @

    • :ここ

      は私の角度設定された角度@^2.4.0
    • /コンパイラの角度@^2.4.0
    • /コア^2.4.0
    • rxjs:^5.1.0

    誰もが私にこれを助けることができますか?

  • +0

    正確なエラーメッセージは何ですか? –

    +0

    上記を参照してください。いくつかのエラーステートメントを追加しました。 – XcodeJunkie

    +0

    '_filterStream'を使用してコードをどのように出力するかは、どのように見えますか? (また '新題()'は '新しい件名()'大文字の 'S')でなければなりません –

    答えて

    0

    私はそれを得たと思う:私はこのことで

    JSON.parse(JSON.stringify()) 
    

    して、新しいフィルタ変数に現在の_filterオブジェクトをコピーし

    、すべてのメソッドは、新しいオブジェクトから削除されます。

    手段は、私はあなたが返信すべてのために...オブジェクトのクローンを作成するための新しい方法を見つけるために

    感謝を持っています!

    関連する問題