类型 'Year' 不能分配给类型"年份[]"。类型 'Year' 中缺少属性'includes'



在使用角度 4 和可观察时出现错误。

src/app/ca-calendar/calendar.component.ts(84,5( 中的错误:错误 TS2322:类型"可观察"不可分配给类型"可观察"。 类型"年份"不能分配给类型"年份[]"。 属性"包括"类型"中缺少"年"。

我做错了什么?

服务:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { Year, Month } from '../../models';
@Injectable()
export class CalendarService {
endPoint: string;
private _calendarUrl = '/api/mycalendar';
constructor(private http: HttpClient) {
}
getYear(id: string): Observable<Year> {
return this.http.get(this._calendarUrl + '?id=' + id)._catch(this.handleError);
}
getYears(): Observable<Year> {
return this.http.get(this._calendarUrl)
.map((res: Response) => res.json())
._catch(this.handleError);

元件:

import { Component, OnInit } from '@angular/core';
import { MonthCalendarComponent } from './month-calendar/month-calendar.component';
import { Month } from '../models/month';
import { MonthsService } from '../services/calendar/months/months.service';
import { CalendarService } from '../services/calendar/calendar.service';
import { Year } from '../models';
import { Observable } from 'rxjs/Observable';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'ca-calendar',
templateUrl: './calendar.component.html',
styleUrls: ['./calendar.component.css']
})
export class CalendarComponent implements OnInit {
public myYears$: Observable<Year[]>;

constructor(private calendarService: CalendarService, private monthsService: MonthsService) {}
ngOnInit() {
this.myYears$ = this.calendarService.getYears();
}

。和型号

import { Month } from './month';
import { Week } from './week';
export class Year {
id: String;
number: Number;
months: Month[];
weeks: Week[];
constructor() {
}
}

您的方法 getYears 签名是Observable<Year>的,您的变量 $myYears 是用Observable<Year[]>键入的。 尝试使用 getYears 方法的Observable<Year[]>签名做类似的事情:

getYears(): Observable<Year[]> {
return this.http.get(this._calendarUrl)
.map((res: Response) => res.json())
.map((yearsData: any) => {
return yearsData.map(yearData => {
const year = new Year());
year.id = yearData.id;
...
return year;
})
})
._catch(this.handleError);

使用该方法,您可以直接获得模型的实例,并且具有良好的签名。

希望对您有所帮助。

相关内容

最新更新