将模型属性设置为基于但不等于 angular-formly 中的输入的值

Setting a model attribute to a value based on, but not equal to, the input in angular-formly

我正在尝试弄清楚如何解析表单条目以将模型属性设置为其他内容;例如,从 URL 输入中提取 YouTube 视频的视频 ID。有没有办法使用 parsers/formatters(6.21 功能?)轻松完成此操作?我希望为此找到一个很好的例子,也许某个地方有一个,但如果没有,也许这会是一个很好的例子。

Here is a working example 我试图完成的任务,但是分多个步骤完成并且没有使用解析器。任何帮助调整代码以在单个步骤(或至少少于 3 个步骤)中从 URL 设置 model.videoID 的帮助将不胜感激。感谢您对这个问题和我过去的其他问题的帮助。 :)

哇,这比我预期的要容易得多。 Here is the modification of the JS Bin 使用 parsers,最近添加了 angular-formly@6.21.0,在一个函数中从 YouTube URL 中提取视频 ID。它还可以方便地自我验证!

这里是相关代码,总结一下:

{
  key: 'vidid',
  type: 'input',
  parsers: [extractID],
  templateOptions: {
    label: 'YouTube Video',
    placeholder: 'Insert video URL here'
},

...

function extractID(value) {    
  if (value != undefined || value != '') {        
    var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/;
    var match = value.match(regExp);
    if (match && match[2].length == 11) {
      return match[2];
    }
  }
};