0

私はAngularとIonicを初めて使用しています。 Firebase Dbにアイテムを追加する簡単なアプリを始めました。ここまでは順調ですね。データベース関連のコードを別のサービスに移動するにはどうすればいいですか?

私は私のコンポーネントTSファイル内の二つの方法があります:私は別のサービスクラスに上記の方法を移動したいと思いますので、私は新しいファイルを作成

add(item: string) { 
    this.items.push({ 
    item: item 
    }) 
    .catch(error => console.log('ERROR ' + error)); 
} 

remove(key: string) { 
    this.af.object(`/items/${key}`).remove() 
    .catch(error => console.log('ERROR ' + error)); 
} 

を:

import {Injectable} from "@angular/core"; 

@Injectable() 
export class ItemService { 
    constructor() { 
    } 
} 

をしかし、上記の方法は、FirebaseListObservableであるitemsを参照し、コントローラに注入されたAngularFireDatabaseであるafを参照する。

サービスで移動できるように上記の2つの方法を変更するにはどうすればよいですか?

答えて

0

ホワイト注射可能なサービスを開始し、これらのメソッドを定義します。その後、firebase dbは観測可能なデータを返し、あなたのサービスではこれらのデータを処理し、再び観察可能な状態に戻って、消費してプロセスビューに購読することができます。

@Injectable() 
export class ItemService { 
    constructor(private firebaseService: FirebaseService) { 
    } 

add(item: string) { 

    // if firebase service returns observable, then map will precess and return observable whcih can be subscribed 
    this.fireBaseService.get().map((data) => { 
    return this.items.push({ 
     item: data.item 
    }) 
    .catch(error => console.log('ERROR ' + error)); 
    }) 
} 


// same f0r remove 
remove(key: string) { 
    return this.af.object(`/items/${key}`).remove() 
    .catch(error => console.log('ERROR ' + error)); 
} 
} 
// if I understood the question correctly 
関連する問題