</ng-container>
<button type="button" class="btn btn-info"
- [disabled]="fmEditForm.invalid" *ngIf="mode != 'view'"
+ [disabled]="fmEditForm.invalid || fieldIsInvalid()" *ngIf="mode != 'view'"
(click)="save()" i18n>Save</button>
</div>
</ng-template>
// This supersedes all other isReadonly specifiers.
isReadonlyOverride?: (field: string, record: IdlObject) => boolean;
+ isValidOverride: (field: string, record: IdlObject) => boolean;
+
// Render the field using this custom template instead of chosing
// from the default set of form inputs.
customTemplate?: CustomFieldTemplate;
});
}
+ fieldIsInvalid(): boolean {
+
+ // todo: encapsulate this to avoid duplication w/ above.
+ const fields = this.idlDef.fields.filter(f =>
+ !f.virtual && !this.hiddenFieldsList.includes(f.name));
+
+ let invalid = false;
+ fields.forEach(field => {
+ const fieldOptions = this.fieldOptions[field.name] || {};
+ if (!fieldOptions.isValidOverride(field.name, this.record)) {
+ invalid = true;
+ }
+ });
+
+ return invalid;
+ }
+
private constructOneField(field: any): Promise<any> {
let promise = null;