【问题标题】:Angular Formly: TemplateUrl validationAngular Formly:TemplateUrl 验证
【发布时间】:2015-08-27 03:06:54
【问题描述】:

我的网站有几种收集姓名相关信息的形式(名字、姓氏、后缀等)。我决定创建一个简单的 html 文件来创建这些字段,而不是在各个页面上的每个控制器上添加/格式化这些字段。这个 html 文件只包含 4 个文本输入。

计划是使用这个 html 文件作为模板,这样就可以很容易地将同名相关的字段快速合并到多个表单中。

我创建了一个 JSBin:http://jsbin.com/nenepuyalu/1/edit?html,js,output

在这个例子中,我没有包括我的各种包装器或验证逻辑(太痛苦了)。也就是说,你可以看到我在哪里创建了一个新类型nameInputGroup。此类型是一个指向 input-group-name.html 的 templateUrl,它有两个文本输入。

我在验证这两个输入时遇到问题。由于它们没有直接添加到 fields 数组中,因此我不确定如何将字段标记为具有 requiredmin/max 验证要求。

有什么建议吗?还是有更好的方法来实现这一点?

【问题讨论】:

  • 有人有一个或两个想法吗?

标签: angularjs angular-formly


【解决方案1】:

如果我正确理解您的用例,您只是希望能够在具有相同系列字段的几个地方不重复自己。有几种方法可以做到这一点。以下是我的推荐:http://kentcdodds.jsbin.com/mokeza/edit?html,js,output

基本上,你将你的配置放在一个单独的文件中,然后你 concat 那些带有你想要的额外字段的字段(你可以链接 concat 调用)。

【讨论】:

  • 既不想复制自己,又想通过引用 html 文件向表单添加字段。我的工作有一个相当烦人的复杂 CDN。与其试图强制正式遵守我们 CDN 的疯狂,我只想引用一个 html 文件,其中所有正确的divs 都已被应用。如果您查看我的示例,input-group-name.html 是我引用的文件。想象一下,这个文件上有更多的div 元素。如何使此文件中的字段(第一个/中间)成为必填字段或通过最小/最大验证?
  • 嗯......我对你真正想要的东西感到很困惑......你的意思是“所有正确的divs已经被应用”?值得注意的是,angular-formly 确实支持单个模板中的多个ng-model 元素,但我强烈建议不要这样做,因为它只会让事情变得更复杂。我的解决方案有什么问题?
  • 我完全理解为什么这令人困惑,哈哈。看看这个:jsbin.com/hedofixeya/edit?html,js,output。如果您查看input-group-name2.html html 文件,您将看到我们的CDN 需要的divs 的多层。我无法让 div 环绕正确的字段。除了(就像我说的那样)我无法让 div 环绕其正确的输入字段之外,您的解决方案没有任何问题。
  • "我们的 CDN 需要的多层 divs" o_O??你的 CDN 对你的模板内容有要求???这对我来说是 0 意义......无论如何,你看过wrappers 吗?这可能是您的解决方案。正如我所说,我强烈建议不要在单个模板中使用多个 ng-models。如果您出于某些奇怪的原因需要一个非常具体的 HTML 结构,那么 formly 可能对您来说是错误的解决方案。
  • 哈哈,向合唱团宣讲我们的 CDN。我玩过包装纸。他们为大多数事情工作。但在该示例中,包装器与围绕整个文本框组的 form__input-group 类存在问题。有什么建议吗?
猜你喜欢
  • 2013-03-05
  • 2018-02-13
  • 2019-01-22
  • 1970-01-01
  • 2018-07-10
  • 2018-03-26
  • 2019-12-09
  • 2020-03-16
  • 2018-02-08
相关资源
最近更新 更多