Ich habe eine Reihe von Schlüsselwörtern als eine Eigenschaft meines Modells. Jetzt möchte ich diese als kommagetrennte Zeichenfolge in einer Eingabe anzeigen und sie in ein Array zurücktransformieren, wenn der Benutzer schreibt.Gibt es eine Möglichkeit, in Angular2 eine "Eingangstransformation" (ein Gegenteil von pipe) zu machen?
Ich habe eine Join-Pipe erstellt, um die Ausgabe zu ändern, aber ich weiß nicht, wie man ein ähnliches Ergebnis mit der (ngModelChange)
erreicht, aber die entgegengesetzte Richtung (Umwandlung in ein String-Array von Komma getrennte Zeichenfolge).
<input type="text" [ngModel]="model.keywords | join:', '," (ngModelChange)="model.keywords=$event">
Ich weiß, ich kann nur eine Methode für eine Komponente hinzufügen, und es gibt zu tun, aber was, wenn ich diese Operation auf vielen verschiedenen Komponenten tun müssen. Ich möchte eine Funktion in angular registrieren, so dass es in HTML wie eine Pipe verfügbar ist.
Vielleicht ist das nicht der beste Weg, um das zu erreichen, was ich brauche und ich muss in eine andere Richtung denken?
Ich kann zwei andere Alternativen sehen:
eine Komponente erstellen für die Eingabe wie das wird es tun, aber dann kann es passieren, ich in einer anderen (nicht-Eingang) Komponente benötigen würde z.B.
Fügen Sie eine zusätzliche Eigenschaft in das Modell ein und machen Sie das Modell selbst für die Transformation verantwortlich (oder verwenden Sie eine Klasse für Schlüsselwörter anstelle eines String-Arrays mit einem separaten Konstruktor oder etwas, nicht sicher, wie Sie dieses an eckig anbinden) Modell).
Ich würde ['ControlValueAccessor'] vorschlagen (https://angular.io/docs/ts/latest/api/forms/index/ControlValueAccessor-interface.html). Hier sind einige Artikel darüber: http://blog.Thoughtram.io/angular/2016/07/27/custom-form-controls-in-angular-2.html, http://almerosteyn.com/2016/04/linkup-custom-control-to-ngcontrol-ngmodel – Sasxa