import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core'; import { FormGroup, FormControl, Validators } from '@angular/forms'; import { Database } from 'src/app/metamodel/store/models'; @Component({ selector: 'app-database-form', templateUrl: 'database-form.component.html' }) export class DatabaseFormComponent implements OnInit { @Input() database: Database; @Output() onSubmit: EventEmitter<Database> = new EventEmitter(); public form = new FormGroup({ label: new FormControl('', [Validators.required]), dbname: new FormControl('', [Validators.required]), dbtype: new FormControl('', [Validators.required]), dbhost: new FormControl('', [Validators.required]), dbport: new FormControl('', [Validators.required]), dblogin: new FormControl('', [Validators.required]), dbpassword: new FormControl('', [Validators.required]) }); ngOnInit() { if (this.database) { this.form.patchValue(this.database); } } submit() { if (this.database) { this.onSubmit.emit({ ...this.database, ...this.form.value }); } else { this.onSubmit.emit(this.form.value); } } }