@lxlib/form
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.1.
131 lines (130 loc) • 4.68 kB
TypeScript
import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChange, SimpleChanges } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { ACLService } from '@lxlib/acl';
import { LxlibI18NService, LxlibLocaleService, LocaleData } from '@lxlib/theme';
import { LxlibFormConfig } from './config';
import { ErrorData } from './errors';
import { SFButton, SFLayout } from './interface';
import { FormProperty } from './model/form.property';
import { FormPropertyFactory } from './model/form.property.factory';
import { SFSchema } from './schema/index';
import { SFUISchema } from './schema/ui';
import { TerminatorService } from './terminator.service';
import { SchemaValidatorFactory } from './validator.factory';
export declare function useFactory(schemaValidatorFactory: SchemaValidatorFactory, options: LxlibFormConfig): FormPropertyFactory;
export declare class SFComponent implements OnInit, OnChanges, OnDestroy {
private formPropertyFactory;
private terminator;
private options;
private dom;
private cdr;
private localeSrv;
private aclSrv;
private i18nSrv;
private unsubscribe$;
private _renders;
private _item;
private _valid;
private _defUi;
private _inited;
locale: LocaleData;
rootProperty: FormProperty | null;
_formData: {};
_btn: SFButton;
_schema: SFSchema;
_ui: SFUISchema;
/** 表单布局,等同 `nzLayout`,默认:horizontal */
layout: SFLayout;
/** JSON Schema */
schema: SFSchema;
/** UI Schema */
ui: SFUISchema;
/** 表单默认值 */
formData: {};
/**
* 按钮
* - 值为 `null` 或 `undefined` 表示手动添加按钮,但保留容器
* - 值为 `none` 表示手动添加按钮,且不保留容器
* - 使用 `spanLabelFixed` 固定标签宽度时,若无 `render.class` 则默认为居中状态
*/
button: SFButton | 'none';
/**
* 是否实时校验,默认:`true`
* - `true` 每一次都校验
* - `false` 提交时校验
*/
liveValidate: boolean;
/** 指定表单 `autocomplete` 值 */
autocomplete: 'on' | 'off';
/** 立即显示错误视觉 */
firstVisual: boolean;
/** 是否只展示错误视觉不显示错误文本 */
onlyVisual: boolean;
/** 表单模式 */
set mode(value: 'default' | 'search' | 'edit');
get mode(): 'default' | 'search' | 'edit';
private _mode;
/**
* Whether to load status,when `true` reset button is disabled status, submit button is loading status
*/
loading: boolean;
disabled: boolean;
noColon: boolean;
cleanValue: boolean;
/** 数据变更时回调 */
readonly formChange: EventEmitter<{}>;
/** 提交表单时回调 */
readonly formSubmit: EventEmitter<{}>;
/** 重置表单时回调 */
readonly formReset: EventEmitter<{}>;
/** 表单校验结果回调 */
readonly formError: EventEmitter<ErrorData[]>;
/** 表单校验状态 */
get valid(): boolean;
/** 表单值 */
get value(): {
[key: string]: any;
};
/**
* 根据路径获取表单元素属性
* @param path [路径](https://ng-alain.com/form/qa#path)
*/
getProperty(path: string): FormProperty | null;
/**
* 根据路径获取表单元素当前值
* @param path [路径](https://ng-alain.com/form/qa#path)
*/
getValue(path: string): any;
/**
* 根据路径设置某个表单元素属性值
* @param path [路径](https://ng-alain.com/form/qa#path)
* @param value 新值
*/
setValue(path: string, value: any): this;
onSubmit(e: Event): void;
constructor(formPropertyFactory: FormPropertyFactory, terminator: TerminatorService, options: LxlibFormConfig, dom: DomSanitizer, cdr: ChangeDetectorRef, localeSrv: LxlibLocaleService, aclSrv: ACLService, i18nSrv: LxlibI18NService);
protected fanyi(key: string): string;
private inheritUI;
private coverProperty;
private coverButtonProperty;
ngOnInit(): void;
ngOnChanges(changes: {
[P in keyof this]?: SimpleChange;
} & SimpleChanges): void;
private attachCustomRender;
validator(options?: {
emitError?: boolean;
onlyRoot?: boolean;
}): this;
/**
* 刷新 Schema,一般需要动态修改 Schema 某个值时可以方便调用
*/
refreshSchema(newSchema?: SFSchema, newUI?: SFUISchema): this;
/**
* 重置表单
* @param [emit] 是否触发 `formReset` 事件,默认:`false`
*/
reset(emit?: boolean): this;
private cleanRootSub;
ngOnDestroy(): void;
}