custom 自定义

定制当前动态表单小部件。更复杂请参考定制小部件

如何使用

务必指定 sf-template 是有效路径值,例如:

  1. <sf>
  2. <ng-template sf-template="custom" let-me let-ui="ui" let-schema="schema">
  3. </ng-tempalte>
  4. </sf>

代码演示

custom 自定义 - 图1

基础样例

最简单的用法。

  1. import { Component } from '@angular/core';
  2. import { NzMessageService } from 'ng-zorro-antd/message';
  3. import { SFSchema } from '@delon/form';
  4. @Component({
  5. selector: 'form-custom-simple',
  6. template: `
  7. <sf [schema]="schema" (formSubmit)="submit($event)">
  8. <ng-template sf-template="custom" let-me let-ui="ui" let-schema="schema">
  9. 自定义内容:
  10. <input
  11. nz-input
  12. [attr.id]="me.id"
  13. [disabled]="me.disabled"
  14. [attr.disabled]="me.disabled"
  15. [nzSize]="ui.size"
  16. [ngModel]="me.formProperty.value"
  17. (ngModelChange)="me.setValue($event)"
  18. />
  19. </ng-template>
  20. </sf>
  21. `,
  22. })
  23. export class FormCustomSimpleComponent {
  24. schema: SFSchema = {
  25. properties: {
  26. custom: {
  27. type: 'string',
  28. title: '自定义内容',
  29. ui: {
  30. widget: 'custom',
  31. },
  32. default: 'test',
  33. },
  34. },
  35. };
  36. constructor(public msg: NzMessageService) {}
  37. submit(value: any) {
  38. this.msg.success(JSON.stringify(value));
  39. }
  40. }

API

参数说明类型
[$implicit]当前上下文ControlWidget
[schema]当前节点 SchemaSFSchema
[ui]当前节点 UISFUISchemaItem

上下文包括 formProperty 属性,它是传递数据的唯一中间层,因此维护 formProperty.value 是唯一与自定义组件通信的媒介。

上下文还包含了一些快捷属性和方法,有关更多细节请阅读 Widget 的定义。