2017-07-21 22 views
6

kątowa 4.3.1
kątowa CLI 1.2.3
Typescript 2.3.4kątowa - typ 'string' nie jest przypisane do typu 'logiczną'

Komponent Typescript file:

public saveName: string; 
public overwrite: boolean; 

The następujących znaczników nie powiedzie się z typu „ciąg” nie jest przypisane do typu „logiczną” kiedy biegnę ng build --prod

<span>{{!overwrite || saveName}}</span> 

OR 

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

Jednak to działa dobrze z następujących czynności:

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

Dlaczego otrzymuję ten błąd?
Dokładniej, dlaczego ten błąd pojawia się tylko wtedy, gdy negowana wartość boolowska występuje przed ciągiem?

Odpowiedz

8

Spróbuj *ngIf="!overwrite && !!saveName" rzucić saveName do logicznej

Powodem maszynopis daje do błędu jest grubsza: używasz ciąg gdzie należy używać wartość logiczną.

Powodem myślę, że to się dzieje tylko w tej sytuacji jest, ponieważ jeśli masz true || anything tylko pierwszy zostaną ocenione (bo jeśli pierwszy jest prawdą całe wyrażenie będzie prawdziwe niezależnie od reszty)