ctx.form
Instance Ant Design Form trong block hiện tại, dùng để đọc/ghi field form, trigger validate và submit. Tương đương với ctx.blockModel?.form, có thể sử dụng trực tiếp trong block form (Form, EditForm, sub-form, v.v.).
Kịch bản áp dụng
Lưu ý:
ctx.formchỉ khả dụng trong ngữ cảnh RunJS liên quan đến block form (Form, EditForm, sub-form, v.v.); trong các kịch bản không phải form (như JSBlock độc lập, block table) có thể không tồn tại, khuyến nghị kiểm tra null trước khi sử dụng:ctx.form?.getFieldsValue().
Định nghĩa kiểu
FormInstance là kiểu instance của Ant Design Form, các phương thức thường dùng như sau.
Phương thức thường dùng
Đọc giá trị form
Ghi giá trị form
Validate và submit
Reset
Quan hệ với các context liên quan
ctx.getValue / ctx.setValue
Trong JS field hiện tại, ưu tiên dùng getValue/setValue để đọc/ghi field này; sử dụng ctx.form khi cần truy cập field khác.
ctx.blockModel
ctx.getVar('ctx.formValues')
Giá trị form cần được lấy qua await ctx.getVar('ctx.formValues'), không trực tiếp expose ra ctx.formValues. Trong ngữ cảnh form, ưu tiên dùng ctx.form.getFieldsValue() để đọc giá trị mới nhất theo thời gian thực.
Lưu ý
getFieldsValue()mặc định chỉ trả về các field đã render; các field chưa render (như trong vùng thu gọn, ẩn theo điều kiện) cần truyềntrue:getFieldsValue(true).- Đường dẫn của các field lồng nhau như sub-table là array, ví dụ
['orders', 0, 'amount']; có thể dùngctx.namePathđể lấy đường dẫn của field hiện tại, dùng để xây dựng đường dẫn của các column khác cùng hàng. validateFields()sẽ ném object lỗi, chứaerrorFields, v.v.; khi validate trước khi submit thất bại có thể dùngctx.exit()để kết thúc các bước tiếp theo.- Trong các kịch bản bất đồng bộ như luồng sự kiện, quy tắc liên kết,
ctx.formcó thể chưa sẵn sàng, khuyến nghị dùng optional chaining hoặc kiểm tra null.
Ví dụ
Liên kết field: hiển thị nội dung khác nhau theo loại
Tính toán field hiện tại dựa trên field khác
Đọc/ghi column khác cùng hàng trong sub-table
Validate trước khi submit
Submit sau khi xác nhận
Liên quan
- ctx.getValue() / ctx.setValue(): Đọc/ghi giá trị field hiện tại
- ctx.blockModel: Model block cha,
ctx.formtương đương vớictx.blockModel?.form - ctx.modal: Popup xác nhận, thường dùng kèm với
ctx.form.validateFields(),ctx.form.submit() - ctx.exit(): Kết thúc luồng khi validate thất bại hoặc người dùng hủy
ctx.namePath: Đường dẫn của field hiện tại trong form (array), khi field lồng nhau dùng để xây dựng name củagetFieldValue/setFieldValue

