2017-02-06 6 views
0

getTodoItems()でObservableとして配列を返すにはどうすればよいですか?TypeScript:Observableとして配列を返す

Promise<Itodo[]>であり、Promise.Resolve(TodoItems)を使用して配列を返しました。しかし、Promiseの代わりにObservableを使用するように変更した場合、データを返す方法がわからず、動作させることができませんでした。

Observable.of(TodoItems)を試しましたが、.of機能はわかりません。

私は何を試してもこれらのエラーが発生し続けます。それで私を助けてくれますか?ありがとう。

enter image description here

import { Injectable } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/observable/fromArray'; 

import { Itodo } from './todo' 

const TodoItems: Itodo[] = [ 
    { todoId: 11, description: 'Mr. Nice' }, 
    { todoId: 12, description: 'Narco' }, 
    { todoId: 13, description: 'Bombasto' } 
] 

@Injectable() 
export class TodoService { 


    constructor(private _http: Http) { 
    } 

    getTodoItems(): Observable<Itodo[]> { 

     return TodoItems.map((items => Itodo[]) => <Itodo[]>items); 
    } 

    addNewTodo(model: Itodo) {   
     TodoItems.push(model); 
    } 

    getTodoItem(id: number): Observable<Itodo> { 
     return this.getTodoItems() 
      .map((items: Itodo[]) => items.find(p => p.todoId === id)); } 
} 

答えて

0

Observable.ofあなたが探しているの正しい方法です。私のプロジェクトでは、rxjs5-beta6とimport { Observable } from 'rxjs/Observable';を使用しているので、ofメソッドを使用するのに十分でした。プロジェクトによっては、ofメソッドを明示的にインポートする必要があります。

すべて失敗した場合は、Observable.from(TodoItems)を試してみるか、値を返す独自の観測値を作成してみてください。

Observable.create((observer: Subscriber<any>) => { observer.next(TodoItems); observer.complete(); });

+1

インポート 'rxjs//追加/の観測可能'; インポートする必要がある場合 – domfx

関連する問題