2

これまでのところ、Stack Overflowでこの問題を解決するのに少し時間を費やしました。私はイオン3 を使用していFirebase subscribe関数でIonic 3イオンチェックボックスのチェック属性が照会できない

は...など、連絡先のリストの一部として、私のhtmlページに属性をチェックする関連する.TSでtoggleItem機能を持っている..and

<ion-list> 
    <ion-item *ngFor="let friend of friends_profile_data | async ;"> 
    <ion-label> 
     <h2>{{friend.name}}</h2> 
    </ion-label> 
    <ion-checkbox [checked]="friend.checked" (click)="toggleItem(friend)" ></ion-checkbox> 
    </ion-item> 
</ion-list> 

ファイルは:

私が正常に同じ.TSファイルに次のように使用することにより、各「友達のこの状態を照会することができたダミーのデータベースと私のテストランで
toggleItem(friend): void { 
    friend.checked = !friend.checked; 
} 

(があったなし|イオンで非同期ローカルダミーDBのコンテンツ行)。

これは、連絡先リスト内のすべての友人を経由して、選択したものを見つけ、選択されていないものではなく、自分の名前を教えてくれます。すべての良い。

うまくいけば、私はすべてをFirebaseデータベースに接続するように移動しました。 Firebaseのsubscribe関数の中で上記と同様のクエリを実行しようとしたときに機能していないことを除いて、すべてうまくいっています。ここでは、そのためのコードが...

この場合friends_profile_dataがダミーローカルデータベースに見られるようなデータの同様のセットを返すが、私のFirebase DBからさ
this.friends_profile_data.subscribe(friends => { 
    friends.forEach((friend) => { 
    if (friend.checked) { 
     console.log(friend.name); 
    } 
    })     
}); 

次のようになります。

リストで選択した友人だけを返すのではなく、すべての友人の名前を記録しています。friend.nameをIF文に登録していないかのように記録します。

私は、次のような場合の代替案、それらのいずれか働いていた、使用して試してみた:何も動作..but

friend.checked = true 
friend.checked == true 
friend.checked === true 

を。

これは機能しますか? Firebusサブスクリプション機能内の属性をチェックして、のクエリを実行して導入されたことがわからない問題がありますか?

また、ローカルのダミーDBを扱うことができて幸運でしたが、実際にはFirebaseのsubscribe関数内でこれに近づくより堅牢な方法がありますか? チェックのアトリビュートアプローチの使用は、私が初期の2日間にしばらく経っていたチュートリアルからのものです。

誰もが提供できる洞察力をお寄せいただきありがとうございます。これは私の最初の投稿なので、できるだけ参考になるように努力しましたが、問題を解決するために追加できるものがあれば教えてください。

答えて

0

Observableでsubscribeを呼び出す前に、このObservableには友人の配列が含まれているので、最初にルールを使用してこれらの友達をフィルタリングする必要があります。マップ関数を使用して 'friends_profile_data'を変換することができます。これは、フィルタリングされたコンテンツで新しい観測値を作成します。

this.friends_profile_data 
    .map(array0 => { 
      return array0.filter(friend => friend.checked === true) 
     }) 
    .subscribe(
     ... 
    ); 
+0

ありがとうジョー、これらの機能は非常に便利です。Firebase DBに存在するもの(例えば、friend => friend.name === 'Some Name')などのために、マップとフィルタが動作していますが、イオンを認識しない同じ問題があるようです-checkbox ** checked **属性** checked.friend **は、DBには存在しませんが、テンプレートには存在しません。 – sean

+0

friends_profile_data変数は、コンストラクタで次のようにFirebase DBに接続されていれば、それが何らかの形で役立つことがわかります。 'this.friends_profile_data = this.dataProvider.angularfireDB.list('/user_friends/$ {this.userCalendarProvider.user_id}/');' 上記のための編集、** friend.checked ** – sean

+0

ありがとうsean。私はイオンに慣れていない。私はいくつかの読書を行います。 –

関連する問題