da ich ein Formular mit vielen verschiedenen Eingabefeldern bekam, eine gigantische HTML-Vorlage zu vermeiden, dass ich die Felder Daten in Objekten setzen will, und erstellen Sie die Vorlage dynamisch ngFor
mit .
Dies ist mein Code bis jetzt.Angular 4 - Eingabetyp zu schaffen dynamisch mit ngFor
stub.ts - das ist, wo ich meine Daten speichern
export const MY_DATA = [
{ placeholder: 'First name', name: 'name', model: 'model.name'},
{ placeholder: 'Last name', name: 'lastName', model: 'model.lastName'},
{ placeholder: 'Age', name: 'age', model: 'model.age'}
];
component.ts
import { Component, OnInit } from '@angular/core';
import {MY_DATA} from './stub';
@Component({
selector: 'app-valutazione-insert',
templateUrl: './valutazione-insert.component.html',
styleUrls: ['./valutazione-insert.component.css']
})
export class ValutazioneInsertComponent implements OnInit {
model: any = {};
data = MY_DATA;
constructor() { }
ngOnInit() {}
submit() {
console.log('Data submitted: ', this.model);
}
}
template.html
<div id="datiRichiesta" [hidden]="datiRichiestaClicked" >
<div class="form-group" *ngFor="let d of data">
<input type="text" class="form-control" placeholder="{{d.placeholder}}" [(ngModel)]=d.model name="{{d.name}}"
onfocus="this.placeholder = ''" (blur)="this.placeholder = d.placeholder"/>
</div>
</div>
Dies sind die Eingabefelder Ich habe:
Dies wird der gerenderte HTML-Code:
Nun, ich habe ein paar Dinge, die nicht funktionieren:
- auch wenn auf dem gerenderten html alle Attribute korrekt gesetzt sind, nimmt der Platzhalterwert den Modellwert
- das Verhalten von t er Platzhalter
onfocus
undonblur
funktioniert nicht - am wichtigsten ist, wenn ich versuche, einige Werte einreichen diese nicht
nun jedes Problem an die Steuerung weitergegeben verschwinden, wenn ich einen Eingabetyp mit allen Eigenschaften statisch eingestellt verwenden. Gibt es eine Möglichkeit zu erreichen, was ich will?
Danke!
Das ist einfach und perfekt. Vielen Dank. – esseara