错误 TS2740:类型 'Observable<DocumentData>' 缺少类型 'ProjectPage[]' 的以下属性:length、pop、push、concat 和另外 25 个

error TS2740: Type 'Observable<DocumentData>' is missing the following properties from type 'ProjectPage[]': length, pop, push, concat, and 25 more

我不确定如何修复此错误。我看过一些帖子,但我仍然没有找到这个问题的答案,我猜这很简单,但我是 Angular 的新手,真的不知道如何解决它。

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { AngularFirestore } from '@angular/fire/firestore';
import { switchMap } from 'rxjs/operators';

import { ProjectPage } from './project-page';

@Component({
  selector: 'app-project-page',
  templateUrl: './project-page.component.html',
  styleUrls: ['./project-page.component.scss']
})
export class ProjectPageComponent implements OnInit {

  project$: ProjectPage[];
  constructor(private afs: AngularFirestore, private route: ActivatedRoute) {}

  ngOnInit() {
    this.project$ = this.route.paramMap.pipe(
      switchMap((params) => {
        const name = params.get('name');
        return this.afs.doc('projects/' + name).ref.get()
        .then((doc) => {
          return doc.data();
        })
      })
    )
  }
}

嗯,这里的问题是您的打字。您将 project$ 指定为 ProjectPage[] 类型,但通过使用路由 paramMap,您将其分配给 Observable。如果您更改

,打字可能会起作用

project$: ProjectPage[];

project$: Observable<ProjectPage[]>;