Sto cercando di far funzionare qualcosa su angular2 e non riesco a trovare qualcosa su questo comportamento.Associazione dati bidirezionale su una proprietà di input componente
Ho un'applicazione che implementa un componente personalizzato come questo:
import {Component,Input} from 'angular2/core'
@Component({
selector:'my-comp',
template:`<input type="text" style="text-align:center; [(ngModel)]="inputText"> <p>{{inputText}}</p>`
})
export class MyComp{
@Input() inputText : string;
}
E io sto cercando di fare un'associazione dati bidirezionale sulla mia variabile inputText
dalla mia componente in questo modo:
<my-comp [(inputText)]="testString"></my-comp>
Dove testString
è una variabile definita nello MyApp.ts
che contiene una stringa. Voglio che la mia variabile testString
venga modificata quando il mio inputText
viene modificato dall'utente.
Ecco un Plunker con un codice di esempio semplice: https://plnkr.co/edit/zQiCQ3hxSSjCmhWJMJph?p=preview
C'è un modo per rendere questo funziona semplicemente? Devo implementare una classe Angular2 sui componenti personalizzati e sulle funzioni di sovraccarico per far sì che funzioni come un ngModel
? Faccio necessariamente dover creare una variabile inputTextChanged
di EventEmitter
tipo che emettono i miei dati quando è cambiato e fare qualcosa del genere:
<my-comp [inputText]="testString" (inputTextChanged)="testString = $event;"></my-comp>
Grazie in anticipo.
Sì, è necessario creare un emettitore di eventi "inputTextChanged" e attivare l'evento all'interno del componente. Quindi [(inputText)] dovrebbe funzionare come previsto. – pixelbits
Come avviso: non esiste un collegamento dati bidirezionale in Angular2, ma è possibile avere un comportamento simile. http://victorsavkin.com/post/110170125256/change-detection-in-angular-2 – jornare
Bene secondo il Cheat Sheet Angular2 dal sito ufficiale: " \t Imposta il collegamento dati bidirezionale Equivalente a: ". Quindi penso che possiamo dire che ci sono dati bidirezionali vincolanti in Angular2. –