import 'rxjs/add/operator/switchMap'; import { Component, OnInit} from '@angular/core'; import { Router } from '@angular/router'; import { FormBuilder, FormGroup } from '@angular/forms'; import { AngularmService } from '../../angularm.service'; import { FlashMessageService } from './flash.message.service'; import { EntityTypeComponent } from '../../meta/entitytype.component'; import { TitleCase } from '../../pipes/titlecase.pipe'; import { EntityType, PropertyType } from '../../entitytype'; @Component({ template: `

New {{ entityType.singular | titleCase }}

Back
` }) export class CreateEntityComponent extends EntityTypeComponent implements OnInit { myForm: FormGroup; constructor( private router: Router, private fb: FormBuilder, private flash: FlashMessageService, angularm: AngularmService ) { super(angularm); } ngOnInit() { let fbConf: any = {}; this.entityType.properties.forEach( (propertyType: PropertyType) => { fbConf[propertyType.name] = ['']; // TO DO Add validators here according to metadata }); this.myForm = this.fb.group(fbConf); } onSubmit(form: any): void { this.angularm.create(this.entityType.singular, form); let entityTypeName = TitleCase.toTitleCase(this.entityType.singular); this.flash.changeMessage(`${entityTypeName} was successfully created.`); let idPropertyType: string = this.entityType.tags.id; this.router.navigate([this.entityType.plural, form[idPropertyType] ]); } }