[解決済み] Angular 4: パイプ 'AsyncPipe' に対する InvalidPipeArgument: '[object Object]' です。
2022-03-12 10:34:09
質問
Firebaseからデータを表示しようとしているのですが、次のようなエラーが表示されます。
InvalidPipeArgument: '[object Object]' for pipe 'AsyncPipe'
.
私のサービスがあります。
import { Injectable } from '@angular/core';
import { AngularFireDatabase } from 'angularfire2/database';
@Injectable()
export class MoviesService {
constructor(private db: AngularFireDatabase) {}
get = () => this.db.list('/movies');
}
私のコンポーネントがあります。
import { Component, OnInit } from '@angular/core';
import { MoviesService } from './movies.service';
@Component({
selector: 'app-movies',
templateUrl: './movies.component.html',
styleUrls: ['./movies.component.css']
})
export class MoviesComponent implements OnInit {
movies: any[];
constructor(private moviesDb: MoviesService) { }
ngOnInit() {
this.moviesDb.get().subscribe((snaps) => {
snaps.forEach((snap) => {
this.movies = snap;
console.log(this.movies);
});
});
}
}
そして、私のパグがいます。
ul
li(*ngFor='let movie of (movies | async)')
| {{ movie.title | async }}
解決方法は?
MoviesServiceでは、FirebaseListObservableをインポートして、戻り値の型を定義する必要があります。
FirebaseListObservable<any[]>
import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';
の場合、get()メソッドは次のようになります。
get (): FirebaseListObservable<any[]>{
return this.db.list('/movies');
}
この get() メソッドは、ムービーリストの FirebaseListObervable を返します。
MoviesComponentは次のようになります。
export class MoviesComponent implements OnInit {
movies: any[];
constructor(private moviesDb: MoviesService) { }
ngOnInit() {
this.moviesDb.get().subscribe((snaps) => {
this.movies = snaps;
});
}
}
すると、movies[] のデータは observable 型ではないので、非同期パイプを使わずに簡単にムービーを反復処理できるようになり、html は次のようになります。
ul
li(*ngFor='let movie of movies')
{{ movie.title }}
としてムービーをデクリアすると
movies: FirebaseListObservable<any[]>;
を呼び出すだけです。
movies: FirebaseListObservable<any[]>;
ngOnInit() {
this.movies = this.moviesDb.get();
}
そして、あなたのhtmlは次のようになります。
ul
li(*ngFor='let movie of movies | async')
{{ movie.title }}
関連
-
[解決済み] ルーターリンク]と[ルーターリンク]の違いについて
-
[解決済み] 標準出力ではなく標準エラー出力にパイプを通すにはどうしたらいいですか?
-
[解決済み] Angular/RxJS `Subscription` からいつ退会すればいいのか?
-
[解決済み] NGIf else "の使い方を教えてください。
-
[解決済み] モジュール "@angular-devkit/build-angular" が見つかりませんでした。
-
[解決済み] 例外が発生しました。既知のネイティブプロパティではないため、'ngFor'にバインドできない
-
[解決済み] The Angular Compiler requires TypeScript >=3.1.1 and <3.2.0 but 3.2.1 found insteadでエラーが発生しました。
-
[解決済み] Angular Materialダイアログエリアの外をクリックしてダイアログを閉じないようにする(Angularバージョン4.0以上で使用可能)
-
[解決済み] テンプレート内の *ngIf else if
-
[解決済み] Angularのルーターリンクが対応するコンポーネントにナビゲートされない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
angularjs ポップアップボックスの方法1
-
[解決済み] コンストラクタとngOnInitの違いについて
-
[解決済み] Angular 6 素材マットセレクトの変更方法が削除されました。
-
[解決済み] NgModule.schemasにCUSTOM_ELEMENTS_SCHEMAを追加してもエラーが表示される。
-
[解決済み] @angular/material/index.d.ts' はモジュールではありません。
-
[解決済み] エクスポートされた2つのクラスを同じ名前でインポートする
-
[解決済み] AngularでngFor repeatをある数のアイテムに制限するにはどうすればよいですか?
-
[解決済み] Angularチュートリアルのpipeメソッドとtapメソッドとは何ですか?
-
[解決済み] ファイル 'app/hero.ts' is not a module error in console, where to store interfaces files in directory structure with angular2?
-
[解決済み] Angularでオブジェクトを繰り返し処理する【重複】。