2016-05-12 58 views
3

從Beta升級到RC1後,管道似乎無法正確傳遞數據。我收到以下內容:Angular2 RC1管道始終通過未定義

ORIGINAL EXCEPTION: TypeError: Cannot read property '1' of undefined 
ORIGINAL STACKTRACE: 
TypeError: Cannot read property '1' of undefined 

這是一個古老的plunker,但它表明我用我的應用程序內管的方式。 https://plnkr.co/edit/DHLVc0?p=preview

有時我根本沒有任何錯誤,它把頁面視爲沒有任何管道。

回答

5

在版本2.0.0-beta.16,管道有突破性的變化。從angular2 changelog

管道現在採用可變數量的參數,而不是包含所有參數的數組。

所以,相反的transform(value, args){}現在transform(value,args...){}

的前

transform(value, [arg1,arg2,arg3]) 

現在

transform(value, arg1, arg2, arg3) 

如果你不想做任何更改到你管道,你仍然可以使用它們,但你必須改變你添加參數

前的樣子:

{{someValue|somePipe:arg1:arg2}} 

將其更改爲:

{{someValue|somePipe:[arg1,arg2]}} // this will work with the new syntax without changing anything in the pipe itself 

或者,更好的辦法,就是改變你的管道並使transform方法接受多個參數而不是一個數組。現在

,要對你的問題的普拉克:

所有你需要使它與新版本的工作就是改變:

transform(input:any, [config = '+']): any{ 

transform(input:any, config = '+'): any{ 

而這它。因爲在你的代碼中,你永遠不會用多於一個參數調用管道。它始終是一系列參數,完全符合新的語法。

Here is your plunk fixed

+0

完美,謝謝!〜我只是看了看RC0和RC1更新日誌do'oh – raeker