Это мой объект «monthCalendar»:
{
"monthName": "September 2019",
"dateObjList": {
"1": {
"dayOfWeek": "0",
"isPublicHoliday": false,
.............
},
"2": {
"dayOfWeek": "0",
"isPublicHoliday": true,
.............
},
.....................
}
}
Это мой component.ts:
...........
ngOnInit() {
this.monthlyCalendarService.getMonthlyCalendar(null, null).subscribe(
(res: MonthlyCalendar) => {
this.monthlyCalendar = res;
this.monthName = this.monthlyCalendar.monthName;
},
(error: Error) => {
alert('Something wrong when getting Monthly Calendar data.\n' + error.message);
},
);
}
.........
Это мой monthCalendarService.ts:
import { Injectable } from '@angular/core';
import { HttpClient, HttpParams } from '@angular/common/http';
import { MonthlyCalendar } from './monthly-calendar';
import { Observable } from 'rxjs';
import { map, catchError } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class MonthlyCalendarService {
constructor(private http: HttpClient) { }
getMonthlyCalendar(year: string, month: string): Observable<MonthlyCalendar> {
const params = new HttpParams();
params.set('year', year);
params.set('month', month);
return this.http.get('backend/getMonthlyCalendar.php', {params}).pipe(map((res: MonthlyCalendar) => res));
/*
return this.http.get('backend/getMonthlyCalendar.php', {params})
.pipe(map((res: MonthlyCalendar) =>{ console.log('service:' + JSON.stringify(res)); return res; })
//, catchError(this.handleError)
);
*/
}
}
Это мой component.html:
...........
<td *ngFor="let dateObj of monthlyCalendar?.dateObjList|async" class="phCell">
<span *ngIf="dateObj.isPublicHoliday">PH</span>
</td>
...........
Я хочу показать тег span, когда атрибут dateObj.isPublicHoliday равен true.
Однако браузер запрашивает следующее сообщение об ошибке:
ERROR Error: InvalidPipeArgument: '[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]' for pipe 'AsyncPipe'
, если я применяю трубу "keyvalue" к * ngFor также, т.е.
<td *ngFor="let dateObj of monthlyCalendar?.dateObjList|async|keyvalue" class="phCell">
Я получил следующее сообщение об ошибке:
Error: InvalidPipeArgument: '[object Object]' for pipe 'AsyncPipe'
Как я могу заставить это работать?