2016-12-27 65 views
-2

我是Angular 2的新手。我對Angular 2的理解是,它基於TypeScript,它將源代碼編譯爲Javascript。作爲一種編譯語言,我希望它能夠捕獲任何未定義的變量,但似乎並非如此,ngFor。例如,在下面的代碼中(我使用VS代碼),ngFor用於迭代對象heroes,如果沒有定義heroes(當我定義heroes時,我得到了一個錯字並將其定義爲heros,它不會給我任何錯誤,最後一行):Angular爲什麼不檢查迭代對象是否存在?

import { Component } from '@angular/core'; 
*export class Hero { 
    id: number; 
    name: string; 
} 
const HEROES: Hero[] = [ 
    { id: 11, name: 'Mr. Nice' }, 
    { id: 12, name: 'Narco' }, 
    { id: 13, name: 'Bombasto' }, 
    { id: 14, name: 'Celeritas' }, 
    { id: 15, name: 'Magneta' }, 
    { id: 16, name: 'RubberMan' }, 
    { id: 17, name: 'Dynama' }, 
    { id: 18, name: 'Dr IQ' }, 
    { id: 19, name: 'Magma' }, 
    { id: 20, name: 'Tornado' } 
]; 

@Component({ 
    selector: 'my-app', 
    template: ` 
    <h1>{{title}}</h1> 
    <h2>My Heroes</h2> 
    <ul class="heroes"> 
     <li *ngFor="let hero of heroes" > 
     <span class="badge">{{hero.id}}</span> {{hero.name}} 
     </li> 
    </ul> 
` 
}) 
export class AppComponent { 
    name = 'Angular'; 
    title = 'Tour of Heroes'; 
    heros = HEROES; 
}* 

請問有人向我解釋爲什麼?我是否期望太多?

+0

你工作的代碼在哪裏? –

+0

花幾分鐘時間閱讀並理解[問]和[mcve],然後用適當的細節和相關代碼更新問題 – charlietfl

+0

問題足夠完整。它只是格式化被搞砸了,所以代碼不可見。 – thorn

回答

0

如果*ngFor引用的屬性爲nullundefined,*ngFor只是不做任何事情。你不會爲此發生錯誤。
TypeScript是JavaScript的超集,undefined是JS和TS中屬性的完美有效值。

對於Dart而言,Angular2會產生這種情況下的錯誤。

+0

我認爲在這種情況下警告會很方便。 –

+0

從TS的角度來看,如果觀察到有norhing警告(如上所述)。有模板自動完成的Angular語言服務和額外的linter檢查工作正在進行中(或者甚至已經可用 - 我沒有最新放棄狀態),可能會提供這樣的檢查。 –