ich diesen Fehler:Angular 2 - Kann nicht eingestellt Form Array-Wert
There are no form controls registered with this array yet. If you're using ngModel, you may want to check next tick (e.g. use setTimeout).
Wenn Sie diesen Code verwenden:
public settingsForm: FormGroup = this.fb.group({
collaborators: this.fb.array([]),
rsvp: this.fb.group({
latestDate: ['', [Validators.required]],
latestTime: ['', [Validators.required]],
guestLimit: ['', [Validators.required]],
isRSVPOpen: false,
isGuestPlusOne: false,
isAutoApproveToGuestlist: false,
isOnlyFacebookRSVP: false,
isBirthdayAndPhoneRequired: false
}),
tickets: this.fb.group({
info: this.fb.group({
closingDate: '',
closingTime: ''
}),
types: this.fb.array([])
})
});
Innen ngOnInit
:
this.eventSubscription = this.af.database.object('/events/' + this.eventId)
.filter(event => event['$value'] !== null)
.subscribe((event: IEvent) => {
const settings: ISettings = event.settings;
const collaborators: ICollaborator[] = settings.collaborators;
const rsvp: IRSVP = settings.rsvp;
const tickets: ITickets = settings.tickets;
this.settingsForm.setValue({
collaborators: collaborators || [],
rsvp: rsvp,
tickets: {
info: tickets.info,
types: tickets.types || []
}
});
}
);
Wenn collaborators
enthält ein Wert, dh es ist nicht undefined
, null
oder leer []
, so etwas wie:
[
{
email: '[email protected]',
role: 1
},
{
email: '[email protected]',
role: 2
}
]
Dann werden die App stürzt auf der setValue
Linie in der eventSubscription
.
Ich kann nicht herausfinden, warum das passiert.
Irgendwelche Ideen?
helfen Das ist genau das, was ich sofort mache. Sie müssen es nicht im Initial-Modus tun. – Chrillewoodz
ok, ich hatte ähnliches Problem und das hat es gelöst. Ich dachte, es wäre das gleiche Problem :(. Hast du diesen [Blogpost] (https://toddmotto.com/angular-2-form-controls-patch-value-set-value) überprüft. Zitat: "Providing your FormControl existiert, bewegt sich Angular in die Object.keys-Schleife, überprüft aber zuerst, ob das Steuerelement für diesen Wert auch über _throwIfControlMissing fehlt: " – mickdev
Es war ein Problem mit der fehlenden Formulargruppe, also musste ich alle Objekte durchlaufen und dann Schieben Sie eine neue Gruppe in das Formular-Array für jeden.
Etwas nervig und komisch Design-Wahl. – Chrillewoodz