gpt4 book ai didi

angular - 为什么 *ngIF 在我的 Angular 应用程序中总是评估为真?

转载 作者:太空狗 更新时间:2023-10-29 17:47:40 24 4
gpt4 key购买 nike

我定义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>&#10003;</span></span>
<ng-template #elseBlock>
<span>&#x2715;</span>
</ng-template>
<span>{{todo.title}}</span>
</li>

但是 todo.complete 的计算结果始终为 true,尽管传入数据并不总是 true。 (我通过使用 Postman 调用该服务来验证这一点...)

为什么值总是true

我应该注意到 todo.title 正确呈现。

更新

通过 Postman 调用 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
}
]

最佳答案

我确信 complete 是以 string 而不是 boolean 的形式出现的。

因为 *ngIf(通常在 JavaScript if(...))中的字符串总是解析为 true(只要因为它不是空的 ('')),*ngIf block 总是显示在屏幕上而 elseBlock 不是。

用这个来修复它:

<span *ngIf="todo.complete === 'true'; else elseBlock"><span>&#10003;</span></span>

关于angular - 为什么 *ngIF 在我的 Angular 应用程序中总是评估为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52804296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com