【问题标题】:Angular - Type 'string' is not assignable to type 'boolean'Angular - 类型“字符串”不可分配给类型“布尔”
【发布时间】:2017-12-28 00:51:02
【问题描述】:

Angular 4.3.1
Angular CLI 1.2.3
打字稿 2.3.4

组件打字稿文件:

public saveName: string;
public overwrite: boolean;

当我运行 ng build --prod

时,以下标记失败,Type 'string' is notassignable to type 'boolean'
<span>{{!overwrite || saveName}}</span>

OR

<button *ngIf="!overwrite && saveName">Save</button>

但是,它适用于以下情况:

<span>{{saveName || !overwrite}}</span>
<span>{{overwrite || saveName}}</span>
<button *ngIf="saveName && !overwrite">Save</button>
<button *ngIf="overwrite && saveName">Save</button>

为什么会出现这个错误?
更具体地说,为什么只有当我在字符串之前有一个否定的布尔值时才会出现该错误?

【问题讨论】:

    标签: angular typescript angular-cli


    【解决方案1】:

    尝试*ngIf="!overwrite &amp;&amp; !!saveName"saveName 转换为布尔值

    TypeScript 给出错误的原因大致是:您使用的是字符串,而您应该使用布尔值。

    我认为它只发生在这种情况下的原因是因为如果你有true || anything,则只会评估第一个(因为如果第一个为真,那么无论其余的如何,整个表达式都会为真)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-07
      • 2020-05-30
      • 2019-08-18
      • 2019-10-25
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2021-02-22
      相关资源
      最近更新 更多