2015-04-23 25 views
7

Próbuję element do a simple binding from an Angular2 do szablonu. Mój kod szablon wygląda tak ...Jak wykonać proste powiązanie wprowadzania tekstu w Angular 2

<textarea class="left-side" #newLeft (keyup)="enterLeftText($event, newLeft)"></textarea> 

<textarea class="right-side">{{leftText}}</textarea> 

Wtedy w moim składnika Mam następujący ...

enterLeftText($event, newLeft) { 
    this.leftText = newLeft.value; 
} 

Problemem jest to, że newLeft zawsze jest niezdefiniowany. czego mi brakuje?

+2

Wygląda jak "textarea" nie obsługuje zapisu '# binding'. Może jeszcze nie zaimplementowane, musisz stworzyć własną dyrektywę, aby obejrzeć zdarzenia i zaktualizować model – floribon

+0

zmienił go na wejście http://plnkr.co/edit/dtbDwneFFIiTazjiF7Li?p=preview wciąż nie ma szczęścia – Jackie

+0

masz rację , błąd był gdzie indziej, zobacz moją odpowiedź: – floribon

Odpowiedz

9

Znalazłeś interesujący błąd, ponieważ wydaje się, że nie możemy mieć wielkich liter w powiązaniu #id.

prostu zastępując newLeft z newleft będzie rozwiązać problem:

http://plnkr.co/edit/ngqd0cUXyxsgBKOBSr9S?p=preview


UPDATE: w rzeczywistości wydaje się, że id powinno być kreska-zauważyć, a zmienna jest przypadek wielbłąd, jak to jest w przypadku na Angular 1 podczas wiązania atrybutów.

więc realna odpowiedź na Twój problem jest napisać #new-left:

<textarea class="left-side" #new-left (keyup)="enterLeftText($event, newLeft)"></textarea> 
+0

zwarta składnia =) w porównaniu do aurelia "' –

+0

@arebutuv że składnia nie jest równoważna z kodem podanym . Chce wykonać funkcję na klawiaturze. –

+1

Szablony to teraz camelCase (od późnej wersji beta) i '# newLeft' powinny działać poprawnie. –

0

Przy użyciu "# nowy-left" otrzymuję wyjątek

EXCEPTION: Error: Uncaught (in promise): Template parse errors: "-" is not allowed in variable names

Rozwiązanie z camelCased nazwami zmiennych działa poprawnie teraz dla mnie.