To make an APS form field read-only, you need to access its FormFieldModel. Once you have that, you can compare its field.id to determine if it’s the field you want to disable, and make it read-only using the parameter field.readonly.
setReadonlyFields(formFieldModel: FormFieldModel[]) {
formFieldModel.forEach(oneField => {
if (this.readonlyFieldList.includes(oneField.id)) {
oneField.readOnly = true;
}
});
}To access the form field model list, you need to wait until the form is loaded.
setFormLoadedEvent() {
this.formService.formLoaded.subscribe((event: FormEvent) => {
// once the form is loaded, set read-only fields
if (event.form.id !== null) {
this.setReadonlyFields(event.form.getFormFields());
}
});
}All the code together.
import { Component, OnInit } from '@angular/core';
import { FormEvent, FormFieldEvent, FormFieldModel, FormModel, FormService, FormOutcomeEvent } from '@alfresco/adf-core';
@Component({
selector: 'app-your-aps-form-component',
templateUrl: './your.component.html',
styleUrls: ['./your.component.scss']
})
export class YourApsFormComponent implements OnInit {
readonlyFieldList = ['id1', 'id2', 'id3'];
constructor(private formService: FormService) {}
ngOnInit() {
this.setFormLoadEvent();
}
setFormLoadedEvent() {
this.formService.formLoaded.subscribe((event: FormEvent) => {
// once the form is loaded, set read-only fields
if (event.form.id !== null) {
this.setReadonlyFields(event.form.getFormFields());
}
});
}
setReadonlyFields(formFieldModel: FormFieldModel[]) {
formFieldModel.forEach(oneField => {
if (this.readonlyFieldList.includes(oneField.id)) {
oneField.readOnly = true;
}
});
}
}