assets/angular/shared/form/field-relatedobjectdata.component.ts
Contributor Model
Properties |
Methods |
constructor(options: any, injector: any)
|
createFormModel | ||||||||
createFormModel(valueElem: any)
|
||||||||
Parameters :
Returns :
any
|
setEmptyValue |
setEmptyValue()
|
Returns :
any
|
setValue | ||||||||
setValue(value: any)
|
||||||||
Parameters :
Returns :
void
|
columns |
columns:
|
Type : object[]
|
enabledValidators |
enabledValidators:
|
Type : boolean
|
hasInit |
hasInit:
|
Type : boolean
|
recordsService |
recordsService:
|
Type : RecordsService
|
relatedObjects |
relatedObjects:
|
Type : object[]
|
showHeader |
showHeader:
|
Type : boolean
|
validators |
validators:
|
Type : any
|
import { Input, Component, OnInit, Inject, Injector} from '@angular/core';
import { SimpleComponent } from './field-simple.component';
import { FieldBase } from './field-base';
import { FormGroup, FormControl, Validators } from '@angular/forms';
import * as _ from "lodash-lib";
import { RecordsService } from './records.service';
/**
* Contributor Model
*
*
* @author <a target='_' href='https://github.com/shilob'>Shilo Banihit</a>
*
*/
export class RelatedObjectDataField extends FieldBase<any> {
showHeader: boolean;
validators: any;
enabledValidators: boolean;
relatedObjects: object[];
hasInit: boolean;
recordsService: RecordsService;
columns: object[];
constructor(options: any, injector: any) {
super(options, injector);
this.relatedObjects = [];
this.columns = options['columns'] || [];
var relatedObjects = this.relatedObjects;
this.value = options['value'] || this.setEmptyValue();
this.recordsService = this.getFromInjector(RecordsService);
var that = this;
_.forEach(this.value, (item:any) => {
this.recordsService.getRecordMeta(item.id).then(function (meta) {
that.relatedObjects.push(meta);
});
});
}
createFormModel(valueElem: any = undefined): any {
if (valueElem) {
this.value = valueElem;
}
this.formModel = new FormControl(this.value || []);
if (this.value) {
this.setValue(this.value);
}
return this.formModel;
}
setValue(value:any) {
this.formModel.patchValue(value, {emitEvent: false });
this.formModel.markAsTouched();
}
setEmptyValue() {
this.value = [];
return this.value;
}
}
// Setting the template url to a constant rather than directly in the component as the latter breaks document generation
const template = '../angular/shared/form/field-relatedobjectdata.html';
/**
* Component to display information from related objects within ReDBox
*
*
*
*
*/
@Component({
selector: 'rb-relatedobjectdata',
templateUrl: template
})
export class RelatedObjectDataComponent extends SimpleComponent {
field: RelatedObjectDataField;
}