В моей форме есть выпадающий список, который по той или иной причине заполняет только одна привязка данных. Данные поступают - я могу вывести их на консоль, но они просто не будут заполнять поле выбора.
Данные предоставляются методом loadOrganizations, и массив выводится на мою консоль при регистрации, как показано здесь:
![enter image description here](https://i.stack.imgur.com/ms12s.png)
Любые идеи о том, что я скучаю? Я переписал это дюжину раз и 16 разных способов безрезультатно.
register.component.ts
import { Component, Output, EventEmitter, OnInit } from '@angular/core';
import { AuthService } from '../../_services/auth.service';
import { AlertifyService } from '../../_services/alertify.service';
import { FormGroup, FormControl, Validators, FormBuilder } from '@angular/forms';
import { Clients } from '../../_models/clients';
import { Router } from '@angular/router';
import { Organizations } from '../../_models/organizations';
import { OrganizationService } from '../../_services/Organization.service';
@Component({
selector: 'app-dashboard',
templateUrl: 'register.component.html',
})
export class RegisterComponent implements OnInit {
@Output() cancelRegister = new EventEmitter();
client: Clients;
organizations: Organizations;
registerClientForm: FormGroup;
registerOrgForm: FormGroup;
constructor(private authService: AuthService, private alertify: AlertifyService,
private fb: FormBuilder, private router: Router, private orgService: OrganizationService) { }
ngOnInit() {
this.loadOrganizations();
this.createClientForm();
this.createOrganizaionForm();
}
createClientForm() {
this.registerClientForm = this.fb.group({
FirstName: new FormControl('', Validators.required),
LastName: new FormControl('', Validators.required),
organization: new FormControl(),
PhoneNumber: new FormControl('', Validators.required),
Username: new FormControl('', Validators.required),
Password: new FormControl('', Validators.required),
ActiveDate: new FormControl(),
EndDate: new FormControl(),
});
}
loadOrganizations() {
this.orgService.getOrganizations().subscribe((organizations: Organizations[]) => {
organizations = organizations;
console.log(organizations);
}, error => {
this.alertify.error(error);
});
}
registerClient() {
if (this.registerClientForm.valid) {
this.client = Object.assign({}, this.registerClientForm.value);
this.authService.register(this.client).subscribe(() => {
this.alertify.success('Registration created successfully');
this.router.navigate(['/manage/clients']);
}, error => {
this.alertify.error(error);
});
}
}
createOrganizaionForm() {
this.registerOrgForm = this.fb.group({
OrganizationName: new FormControl('', Validators.required),
FirstName: new FormControl('', Validators.required),
LastName: new FormControl('', Validators.required),
PhoneNumber: new FormControl('', Validators.required),
StreetAddress: new FormControl('', Validators.required),
City: new FormControl('', Validators.required),
State: new FormControl('', Validators.required),
Country: new FormControl('', Validators.required),
PostalCode: new FormControl('', Validators.required),
});
}
registerOrganization() {
if (this.registerOrgForm.valid) {
this.organizations = Object.assign({}, this.registerOrgForm.value);
this.orgService.CreateOrganization(this.organizations).subscribe(() => {
this.alertify.success('Organization created successfully');
// this.router.navigate(['/manage/clients']);
}, error => {
this.alertify.error(error);
});
}
}
cancel() {
this.cancelRegister.emit(false);
console.log('cancelled');
}
}
полный register.component. html
<div class="row">
<div class="col-md-12">
<div class="card card-user">
<tabset>
<!-- BEGIN ORGANIZATION TAB -->
<tab heading="Organization">
<div class="card-header">
<h5 class="card-title">Register New Client</h5>
</div>
<div class="card-body">
<form
[formGroup]="registerOrgForm"
(ngSubmit)="registerOrganization()"
enctype="multipart/form-data"
>
<div class="row">
<div class="col-md-3 px-1">
<div class="form-group">
<label>Organization</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerOrgForm.get('OrganizationName').errors &&
registerOrgForm.get('OrganizationName').touched
}"
class="form-control"
formControlName="OrganizationName"
placeholder="Complete Security Ltd."
/>
<div class="invalid-feedback">
Please enter the organization name
</div>
</div>
</div>
<div class="col-md-3 px-1">
<div class="form-group">
<label>Contact First Name</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerOrgForm.get('FirstName').errors &&
registerOrgForm.get('FirstName').touched
}"
formControlName="FirstName"
class="form-control"
placeholder="John"
/>
<div class="invalid-feedback">
Please enter a contact first name
</div>
</div>
</div>
<div class="col-md-3 px-1">
<div class="form-group">
<label for="text">Contact Last Name</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerOrgForm.get('LastName').errors &&
registerOrgForm.get('LastName').touched
}"
formControlName="LastName"
class="form-control"
placeholder="Smith"
/>
<div class="invalid-feedback">
Please enter a contact last name
</div>
</div>
</div>
<div class="col-md-3 px-1">
<div class="form-group">
<label>Phone Number</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerOrgForm.get('PhoneNumber').errors &&
registerOrgForm.get('PhoneNumber').touched
}"
formControlName="PhoneNumber"
class="form-control"
placeholder="604-929-3929"
/>
<div class="invalid-feedback">
Please enter a phone number
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 px-1">
<div class="form-group">
<label>Street Address</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerOrgForm.get('StreetAddress').errors &&
registerOrgForm.get('StreetAddress').touched
}"
formControlName="StreetAddress"
class="form-control"
placeholder="123 Main St"
/>
<div class="invalid-feedback">
Please enter a street address
</div>
</div>
</div>
<div class="col-md-6 px-1">
<div class="form-group">
<label>City</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerOrgForm.get('City').errors &&
registerOrgForm.get('City').touched
}"
formControlName="City"
class="form-control"
placeholder="North Vanouver"
/>
<div class="invalid-feedback">Please enter a city</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4 px-1">
<div class="form-group">
<label>State</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerOrgForm.get('State').errors &&
registerOrgForm.get('State').touched
}"
formControlName="State"
class="form-control"
placeholder="BC"
/>
<div class="invalid-feedback">Please enter a state</div>
</div>
</div>
<div class="col-md-4 px-1">
<div class="form-group">
<label>Country</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerOrgForm.get('Country').errors &&
registerOrgForm.get('Country').touched
}"
formControlName="Country"
class="form-control"
placeholder="Canada"
/>
<div class="invalid-feedback">Please enter a country</div>
</div>
</div>
<div class="col-md-4 px-1">
<div class="form-group">
<label>Postal Code</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerOrgForm.get('PostalCode').errors &&
registerOrgForm.get('PostalCode').touched
}"
formControlName="PostalCode"
class="form-control"
placeholder="V7H 1S6"
/>
<div class="invalid-feedback">
Please enter a postal code
</div>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-sm btn-primary">
<i class="fa fa-dot-circle-o"></i> Submit
</button>
<button
type="reset"
class="btn btn-sm btn-danger"
(click)="cancel()"
>
<i class="fa fa-ban"></i> Cancel
</button>
</div>
</form>
</div>
</tab>
<!-- END ORGANIZATION TAB -->
<!-- BGIN CLIENT TAB -->
<tab heading="Client">
<div class="card-header">
<h5 class="card-title">Register New Client</h5>
</div>
<div class="card-body">
<form
[formGroup]="registerClientForm"
(ngSubmit)="registerClient()"
enctype="multipart/form-data"
>
<div class="row">
<div class="col-md-4 px-1">
<div class="form-group">
<label>Contact First Name</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerClientForm.get('FirstName').errors &&
registerClientForm.get('FirstName').touched
}"
formControlName="FirstName"
class="form-control"
placeholder="John"
/>
<div class="invalid-feedback">
Please enter a contact first name
</div>
</div>
</div>
<div class="col-md-4 px-1">
<div class="form-group">
<label for="text">Contact Last Name</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerClientForm.get('LastName').errors &&
registerClientForm.get('LastName').touched
}"
formControlName="LastName"
class="form-control"
placeholder="Smith"
/>
<div class="invalid-feedback">
Please enter a contact last name
</div>
</div>
</div>
<div class="col-md-4 px-1">
<div class="form-group">
<label>Organization</label>
<select
id="OrganizationName"
class="form-control"
formControlName="organization">
<option
*ngFor="let organization of organizations"
[value]="organization.id">
{{ organization.organizationName }}
</option>
</select>
<div class="invalid-feedback">
Please select the organization this user will belong to
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4 px-1">
<div class="form-group">
<label>Phone Number</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerClientForm.get('PhoneNumber').errors &&
registerClientForm.get('PhoneNumber').touched
}"
formControlName="PhoneNumber"
class="form-control"
placeholder="604-929-3929"
/>
<div class="invalid-feedback">
Please enter a phone number
</div>
</div>
</div>
<div class="col-md-4 px-1">
<div class="form-group">
<label>Email Address (Username)</label>
<input
type="text"
[ngClass]="{
'is-invalid':
registerClientForm.get('Username').errors &&
registerClientForm.get('Username').touched
}"
formControlName="Username"
class="form-control"
placeholder="user@email.com"
/>
<div class="invalid-feedback">
Please enter the users email address
</div>
</div>
</div>
<div class="col-md-4 px-1">
<div class="form-group">
<label>Temporary Password</label>
<input
type="password"
[ngClass]="{
'is-invalid':
registerClientForm.get('Password').errors &&
registerClientForm.get('Password').touched
}"
formControlName="Password"
class="form-control"
placeholder="Password"
autocomplete="Create Password"
/>
<div class="invalid-feedback">Please enter a password</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 px-1">
<div class="form-group">
<label>Start Date</label>
<input
formControlName="ActiveDate"
type="date"
class="form-control"
/>
</div>
</div>
<div class="col-md-6 px-1">
<div class="form-group">
<label>End Date</label>
<input
formControlName="EndDate"
type="date"
class="form-control"
/>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-sm btn-primary">
<i class="fa fa-dot-circle-o"></i> Submit
</button>
<button
type="reset"
class="btn btn-sm btn-danger"
(click)="cancel()"
>
<i class="fa fa-ban"></i> Cancel
</button>
</div>
</form>
</div>
</tab>
<!-- END CLIENT TAB -->
</tabset>
</div>
</div>
</div>
соответствующий раздел register.compon enet. html
<div class="col-md-4 px-1">
<div class="form-group">
<label>Organization</label>
<select
id="OrganizationName"
class="form-control"
formControlName="organization">
<option
*ngFor="let organization of organizations"
[value]="organization.id">
{{ organizations.organizationName }}
</option>
</select>
<div class="invalid-feedback">
Please select the organization this user will belong to
</div>
</div>
</div>