2016-05-12 2 views
3

После обновления до версии 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(input:any, [config = '+']): any{ 

Для

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

И это Это. Потому что в вашем коде вы никогда не называете трубу более чем одним аргументом. Это всегда массив аргументов, который отлично вписывается в новый синтаксис.

Here is your plunk fixed

+0

Отлично, спасибо! ~ Я только посмотрел на RC0 и RC1 do'oh списком изменений – raeker

Смежные вопросы