2016-01-02 68 views
0

沒有預期的錯誤,我有一個角2組件MyComp規格對角2 templateUrl

@Component({ 
    selector: 'myform', 
    templateUrl: './myform.html', 
    providers: [HTTP_PROVIDERS], 
    directives: [ROUTER_DIRECTIVES] 
}) 

這是我的規格。

it('should work', injectAsync([TestComponentBuilder], (tcb) => { 
    return tcb.createAsync(MyComp).then((fixture) => { 
     fixture.detectChanges(); 
     expect(1+ 1).toEqual(2); 
    }); 
})); 

當我執行它給我一個錯誤

Can't bind to 'ngForOf' since it isn't a known native property 

的實際代碼工作,但它只是測試,是失敗的試驗,

更新: 規格工作,如果我用模板替換templateUrl。 即如果我只是用

模板嘗試:<h1>Fake</h1> <ul> <li *ngFor="#item of items"> </li> </ul>

有興趣知道是否有人曾與角2.0 beta版測試的組件與templateUrl。

謝謝!

+1

使用templateUrl時,單元測試(檢查有一個錯誤[問題在這裏(HTTPS:/ /github.com/angular/angular/issues/5662))。現在只需使用'template'屬性或'overrideTemplate'。 –

+0

如果我使用overrideTemplate,我還會測試實際的組件嗎?或只是一個虛擬的組件? – user636525

+0

這將是模板重寫的實際組件,因此它基本相同。如果你不確定,你仍然可以使用'template'屬性。 –

回答

2

您應該添加ngForCORE_DIRECTIVES到組件指令

import { CORE_DIRECTIVES } from 'angular2/common'; 

@Component({ 
    selector: 'myform', 
    templateUrl: './myform.html', 
    providers: [HTTP_PROVIDERS], 
    directives: [ROUTER_DIRECTIVES, CORE_DIRECTIVES] // <- HERE!!! 
}) 
export class MyForm { /* ... */ } 

import { NgFor } from 'angular2/common'; 

@Component({ 
    selector: 'myform', 
    templateUrl: './myform.html', 
    providers: [HTTP_PROVIDERS], 
    directives: [ROUTER_DIRECTIVES, NgFor] // <- HERE!!! 
}) 
+0

謝謝,我試圖添加一個錯誤處理程序tcb.createAsync和它顯示的實際錯誤是TypeError:無法讀取Env.fail(http://127.0.0.1:8080/node_modules/jasmine -core/lib/jasmine-core/jasmine.js:987:24) at next.fail(http://127.0.0.1:8080/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:1903 :19) – user636525

+0

@ user636525嗯,其實我不知道這個錯誤:( – alexpods

+0

我認爲問題是與@Component指令的templateUrl。如果我只用模板替換templateUrl:'

假的

',它工作正常。您是否使用templateUrl而不是模板嘗試了組件測試? – user636525