布尔值上带有Angular 2问题的Typescript

时间:2017-12-27 10:21:56

标签: angular

从API结果填充模型时,我遇到了一个奇怪的问题。

我的模型看起来像这样:

import {Company} from './../api/odata/data/Company';

export class MyModel {
...
isEnabled = false;
....
    constructor(data: Company= null) {
        try {
            this.isEnabled = !data.isDisabled;
            ...
        }
        ...
}

当我填充数据模型时,如果data.isDisabled等于false,则this.isEnabled应为true,但它返回false ...

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:3)

data.isDisabled是一个字符串好友。您可以通过多种方式将其转换为布尔值。但我很好奇数据来自哪里。

如果没有办法确保data.isDisabled作为布尔值出现,你可以做两件事。

1-检查字符串值是什么,并根据返回布尔值。

this.isEnabled = data.isDisabled === 'true' ? false : true

2-或使用eval,我不推荐

this.isEnabled = eval(data.isDisabled);

3-向后兼容的解决方案,最好是三个

如果isDisabled是实际的布尔值,这甚至可以工作。

this.isEnabled = !JSON.parse(data.isDisabled);

查看有关字符串到布尔转换here

的更多信息