KA冉KA 2022-01-04 16:27 采纳率: 34.4%
浏览 26
已结题

angular + ng-zorro中form的日期时间控件

form中只有date和time的控件类型,没有日期时间(datetime)的控件类型:
.
.
.
this.register('number', NumberWidget); // 数值
this.register('date', DateWidget); // 日期
this.register('time', TimeWidget); // 时间
this.register('custom', CustomWidget); // 自定义

目前的使用写法:
this.register({name: '数字控件', type: 'number', options: [
{title: '控件配置', config: {...formConfig, schema: controlBaseOption}},
{title: '验证规则', config: {...formConfig, schema: controlBaseOption}},
]
});
.
.
.

想要其他控件类型,是否需要使用自定义,如何使用这个自定义的写法呢

  • 写回答

2条回答 默认 最新

  • 来回三五七 2022-01-05 09:49
    关注
    // html  方法可忽略
    <ng-template #finishTimeExpected let-data="data">
      <nz-date-picker
        nzShowTime
        [(ngModel)]="finishTimeExpectedTime"
        nzPlaceHolder=""
        (ngModelChange)="finishTimeOnChange($event, 'finishTimeExpected')"
      ></nz-date-picker>
    </ng-template>
    
    // ts
    @ViewChild('finishTimeExpected') finishTimeExpected: TemplateRef<HTMLDocument>;
    
    /**
       * 初始化表单配置
       */
      initColumn(): void {
        this.column = [
          {
            label: '时间',
            key: 'finishTimeExpected',
            type: 'custom', // 类型 自定义
            template: this.finishTimeExpected, // 自定义的模板
            rule: [{required: true}], // 规则
          }];
    }
    把写好的完整的表单配置传值给form:
    /**
       * 初始化表单配置
       */
      private initForm(): void {
        this.formGroup = new FormGroup({});
    // column 完整表单配置
    // language 语言包可忽略
        this.formOperate = new FormOperate(this.formGroup, this.column, this.language);
        this.column.forEach((item: FormItem) => {
          const value = item.initialValue || null; // 初始值可忽略
          const formControl = new FormControl({value: value, disabled: this.isDisabled || item.disabled},// 自定义规则可忽略
            this.formOperate.addRule(item.rule, item.customRules),// 自定义规则可忽略
            this.formOperate.addAsyncRule(item.asyncRules));// 自定义规则可忽略
          this.formGroup.addControl(item.key, formControl);// 自定义组件
        });
        this.formInstance.emit({instance: this.formOperate}); // 回传给页面渲染可忽略
      }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月22日
  • 已采纳回答 1月14日
  • 创建了问题 1月4日

悬赏问题

  • ¥50 有偿求qftp工具。能连接,下载文件,发送代码,windows环境,最好qt6 要qt creator写的
  • ¥70 刚刚看到一个人的网站居然是通过cname访问的
  • ¥15 Attributeerror:super object has no attribute '__sklearn_tags__'_'
  • ¥15 逆置单链表输出不完整
  • ¥15 宇视vms-B200-A16@R启动不了,如下图所示,在软件工具搜不到,如何解决?(操作系统-linux)
  • ¥500 寻找一名电子工程师完成pcb主板设计(拒绝AI生成式答案)
  • ¥15 关于#mysql#的问题:UNION ALL(相关搜索:sql语句)
  • ¥15 matlab二位可视化能否针对不同数值范围分开分级?
  • ¥15 已经创建了模拟器但是不能用来运行app 怎么办😭自己搞两天了
  • ¥15 关于#极限编程#的问题,请各位专家解答!