我需要你的帮助,我正试图显示来自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()方法将返回FireBaseListOberable of movies列表

在你的电影中,组件应该是这样的

export class MoviesComponent implements OnInit {
  movies: any[];

  constructor(private moviesDb: MoviesService) { }

  ngOnInit() {
    this.moviesDb.get().subscribe((snaps) => {
       this.movies = snaps;
   });
 }
}

然后,您可以很容易地在没有异步管道的情况下遍历电影,因为Movies[]数据不是可观察的类型,您的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相关问答推荐

使用路由进行测试.为每次测试导航堆栈

基于另一个控制值显示值的Angular 数组

仅在从forkJoin获得数据后订阅主题

为什么我的自定义.d.ts不起作用?LeaderLine不是构造函数

HTTP拦截器在Angular 17项目中不起作用

合并Cypress和Karma的代码覆盖率报告JSON文件不会产生正确的结果

Angular MSAL - 对 Bearer 令牌和 AUD 属性的怀疑

重新打开模态时 ng-select 中的重复值 - Angular

使用 Observable 进行渐进式填充

如何使用指令以Angular 传递默认值

我想将一个对象传递给一个子组件.我做了一切,但没有任何效果. (Angular )

带有数据的 Angular 模板

为什么 Angular2 routerLinkActive 将活动类设置为多个链接?

angular 2模板使用console.log

在 Angular 中动态设置样式

Angular为 4 的可扩展表格行,带有Angularmaterial

Angular2 - 如何开始以及使用哪个 IDE

NG2-Charts 无法绑定到 datasets,因为它不是 canvas的已知属性

Angular 2 可用的 yeoman 生成器

如何从指令访问主机组件?