Je veux écrire une directive 2 angulaire, ce qui devrait avoir le comportement suivant:angulaire 2 Directive avec ngModel et ngControl
Doit être utilisable avec et sans enveloppe
<form [ngFormModel]="form">
Si utiliser
[(ngModel)]
pour la liaison de donnéesUtilisez un
Observer
interne, qui met à jour lesngModel
250ms après la dernière entrée de l'utilisateur est arrivéLorsque vous utilisez un emballage
<form [ngFormModel]="form">
il devrait être possible d'écouterform.valueChanges
(qui bien sûr doit tirer 250ms après la dernière entrée de l'utilisateur)
J'ai écrit la directive suivante pour le test:
import {Directive, EventEmitter, Input, Output} from 'angular2/core'
import {NgModel} from 'angular2/common'
import {Observable} from 'rxjs/Observable'
@Directive({
selector: '[queryDirective]'
})
export class QueryDirective {
constructor(public model:NgModel) {}
ngOnInit() {
this.model.control.valueChanges
.debounceTime(250)
.subscribe(val => this.model.control.updateValue(val,{emitEvent:true}));
}
}
Il fonctionne lors de l'utilisation pasngControl
. Il dit ensuite qu'aucun fournisseur pour NgModel
peut être trouvé.
<form [ngFormModel]="form">
<input queryDirective ngControl="..." type="text" [(ngModel)]="...">
</form>
Mais quand je l'utilise NgControl
sur le constructeur de la méthode this.model.control.updateValue
ne sera pas mise à jour du ngModel
.
Qu'est-ce que je fais mal? Ou quelqu'un a-t-il un exemple de code qui fonctionne?
Merci d'avance!