2017-07-21 14 views
6

góc 4.3.1
góc CLI 1.2.3
nguyên cảo 2.3.4góc - Loại 'string' là không thể chuyển nhượng để gõ 'boolean'

Component nguyên cảo file:

public saveName: string; 
public overwrite: boolean; 

Các đánh dấu sau không thành công với Loại 'chuỗi' không thể gán để nhập 'boolean' khi tôi chạy ng build --prod

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

OR 

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

Tuy nhiên, nó hoạt động tốt với những điều sau đây:

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

Tại sao tôi nhận được lỗi đó?
Cụ thể hơn, tại sao lỗi đó chỉ hiển thị khi tôi có boolean phủ định đến trước một chuỗi?

Trả lời

8

Hãy thử *ngIf="!overwrite && !!saveName" để cast saveName để một boolean

Lý do nguyên cảo cho cho các lỗi là khoảng: bạn đang sử dụng một chuỗi mà bạn nên sử dụng một boolean.

Lý do tôi nghĩ rằng nó chỉ xảy ra trong hoàn cảnh đó là bởi vì nếu bạn có true || anything chỉ là người đầu tiên sẽ được đánh giá (vì nếu là người đầu tiên là đúng toàn bộ biểu hiện sẽ thành sự thật không phụ thuộc vào phần còn lại)

Các vấn đề liên quan