iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0

昨天我們處理完分頁
現在來把檢核的部分套上去
我們昨天有處理form表單的部分
檢核的部分其實昨天有寫一點
不過沒有特別解釋到

// form-input.component.ts
this.pageSetting.form = this.fb.group(this.pageSetting.fieldSettings.reduce((acc: any, item) =>
{
    acc[item.name] = [item.defaultValue || ''];
    if (item.validator && item.validator.length > 0)
    {
        acc[item.name].push({ validators: item.validator })
    }
    return acc;
}, {}));

這邊原本只有塞值
因為設定檔加了檢核validator
所以這邊在用formBuilder塞值的時候
判斷如果有validator會直接增加進去
原本formBuilder只有增加值的格式是['value']
如果要再增加檢核就是 ['value',{validators:[Validator.required]]這樣的格式
於是乎我們直接把設定檔內寫成陣列直接放到validators裡面
這樣我們就可以在每一頁透過每一頁的設定檔產生具有檢核功能的form表單

然後我們在main的上下一頁的地方增加檢核控制

    pageNext()
    {
        // 檢核沒通過的時候阻止往下一頁
        if (this.pageSettings[this.page].form?.invalid) return;
        if (this.page < this.pageSettings.length - 1)
        {
            this.page = Number(this.page) + 1;
        }
    }

這樣我們就完成了頁面的檢核控制
還有一些細部的控制可以在看需求加上去
有些可能按下下一頁的時候才觸發檢核
這樣可能就需要在下一頁的部分多一個變數紀錄是否觸發過
在把這個變數傳進去元件裡面控制
這是一種寫法
看還有沒有其他種寫法
這大概就是今天的部分 明天再來想可以加什麼東西
今天好像沒改到程式不過也切個分支 之後看有沒有甚麼要補充的

今日程式:day15


上一篇
第14天 分頁規則
下一篇
第16天 版面調整
系列文
簡單的事 最困難-Angular動態Form元件30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言