argos/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts

41 lines
1.3 KiB
TypeScript
Raw Normal View History

2019-01-18 18:03:45 +01:00
import { Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { Subscription } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { BaseComponent } from '../../../../../core/common/base/base.component';
import { Field } from '../../../../../core/model/dataset-profile-definition/field';
import { VisibilityRulesService } from '../../visibility-rules/visibility-rules.service';
@Component({
selector: 'app-form-field',
templateUrl: './form-field.component.html',
styleUrls: ['./form-field.component.scss']
})
export class FormFieldComponent extends BaseComponent implements OnInit {
@Input() field: Field;
form: FormGroup;
change: Subscription;
trackByFn = (index, item) => item ? item['id'] : null;
constructor(
public visibilityRulesService: VisibilityRulesService
) { super(); }
ngOnInit() {
if (this.field) {
this.form = this.visibilityRulesService.getFormGroup(this.field.id);
this.change = this.form.get('value').valueChanges
.pipe(takeUntil(this._destroyed))
.subscribe(item => {
this.visibilityRulesService.updateValueAndVisibility(this.field.id);
});
}
}
assignDropdownItem(item: any) {
if (!item) { return null; }
return (typeof item === 'string') ? JSON.parse(item) : JSON.stringify(item);
}
}