错误 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[]>;
我不确定如何修复此错误。我看过一些帖子,但我仍然没有找到这个问题的答案,我猜这很简单,但我是 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[]>;