Я определяю Todo
следующим образом:
export class Todo {
id: number;
title: string;
complete: boolean = false;
editMode: boolean = false;
}
У меня есть следующая служба данных:
getAllTodos(): Observable<Array<Todo>> {
return this.aHttpService.get<Array<Todo>>('http://localhost:3000/todos');
}
Тогда у меня есть этот компонент:
import { Component, OnInit } from '@angular/core';
import { TodoDataService } from '../todo-data.service';
import { Todo } from '../todo';
import { Observable } from 'rxjs/Observable';
@Component({
selector: 'app-all-tasks',
templateUrl: './all-tasks.component.html',
styleUrls: ['./all-tasks.component.css']
})
export class AllTasksComponent implements OnInit {
constructor(private todoDataService: TodoDataService) {}
allTodos: Observable<Array<Todo>>;
ngOnInit() {
this.allTodos = this.todoDataService.getAllTodos();
}
}
и в шаблоне, который у меня есть:
<li *ngFor="let todo of allTodos | async" >
<span *ngIf="todo.complete; else elseBlock"><span>✓</span></span>
<ng-template #elseBlock>
<span>✕</span>
</ng-template>
<span>{{todo.title}}</span>
</li>
Однако todo.complete
всегда оценивается как true
, несмотря на то, что входящие данные не всегда true
.(Я подтверждаю это через звонок в службу почтальона ...)
Почему значение всегда true
?
Я должен отметить, что todo.title
отображается правильно.
Обновление
Вызов http://localhost:3000/todos
через Почтальона возвращает:
[
{
"id": 1,
"title": "Learn TypeScript",
"complete": "true",
"editMode": "false"
},
{
"id": 2,
"title": "Learn Angular changed",
"complete": "true",
"editMode": "false"
},
{
"id": 3,
"title": "Learn to Read",
"complete": "true",
"editMode": "false"
},
{
"id": 4,
"title": "Learn to Write",
"complete": "false",
"editMode": "false"
},
{
"title": "Learn how to type",
"complete": "true",
"editMode": "false",
"id": 5
},
{
"title": "Learn how to drive",
"complete": "false",
"editMode": "false",
"id": 6
}
]