form nzHasFeedback 组件兼容设计 #7497
Unanswered
simplejason
asked this question in
Ideas
Replies: 1 comment 1 reply
-
|
我个人倾向于方案2, |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
背景
DEMO: https://ant.design/components/form-cn/#components-form-demo-validate-static
在先前版本中,Form 为了实现 feedback 会做非常多的样式魔改。对 select 做个偏移,对 datePicker 加个 padding 等等。这让 Form 在 status 样式下和子组件耦合度非常高。所以之后改成了 FormItem 告诉你状态,子组件决定是否要采用。这样对于 Form 而言不用耦合样式,对于三方组件而言也可以通过 context 实现自己的 status 拓展。
ant-design的 form 表单将 status 和 hasFeedback 下移到组件内部,让子组件根据 form 的状态自动更新errorwarningsuccess对应的状态和 feedback 图标。但是
input/input-number/mention这类简单结构(无后缀元素)就得根据feedback字段返回不同的 dom 结构,对于当前 ng-zorro-antd 的使用方式和实现方式都有不同程度影响,在此希望大家讨论下最优的方案。举例
ant-design:
input-number: https://github.com/ant-design/ant-design/blob/master/components/input-number/index.tsx#L101
input: https://github.com/ant-design/ant-design/blob/master/components/input/Input.tsx#L153
在 ng-zorro 中实现
方案 1:
提供 nz-form-feedback 组件,在需要包裹的组件上使用
弊端:需要用户修改原始代码,且需要在 nz-form-feedback 内部判断组件类型,决定 class 的前缀 ,如 ant-input ant-mentions ...
方案 2:
针对相关组件提供 nz-xxx-group 组件,如已有的 nz-input-group,可实现组件前缀后缀的同时复用这个结构实现 feedback 能力,但是要求用户在 form 中使用时只能通过 nz-xxx-group 形式才能支持 feedback icon 能力
方案 3:
在组件内部根据 feedback 属性动态渲染不同的 dom 结构,但是对于 nz-input 指令型目前不支持。
弊端:原来绑定在 host 上的 class 就不能直接绑定了,此时 nz-xxx 组件基本就只能当成一个 element tag
讨论待办 TODO
todo
Beta Was this translation helpful? Give feedback.
All reactions