我有一个 Angular 应用程序,它使用 UntypedFormGroup 来存储和检索来自用户的输入值。
我使用 addControl 函数向 UntypedFormGroup 添加控件,如下所示:
this.myUntypedFormGroup.addControl('mypath', new UntypedFormControl());
然后像这样检索值:
this.myUntypedFormGroup.get('mypath').value
这工作正常 - 除非我想在路径参数中使用句点。
例如,如果我希望路径是 pdf 文件的名称:
this.myUntypedFormGroup.addControl('myfile.pdf', new UntypedFormControl());
当我尝试检索它时,它返回一个空指针异常:
this.myUntypedFormGroup.get('myfile.pdf').value
我想我明白了为什么会这样——它解释了 mypdffile.pdf 中的句点,表示“pdf”应该是“myfile”的子控件,因此当它找不到名为“pdf”的子控件时它就会死机。
有没有办法对句点字符进行转义,以便将其作为路径字符串的文字部分,而不是假设存在子控件?
非常感谢。
这一问题对于
UntypedFormControl
和 来说很常见FormControl
。为什么要将表单控件名称作为文件名,它应该定义为一些容易理解的东西,例如
file1
或myfilePdf
诸如此类的东西。相反,您应该将名称和文件存储在 中
formArray
,以便您知道它的来源。没有规定表单控件必须具有相应的 HTML,因此您不需要在 HTML 中使用 的表单字段fileName
。据我所知,您不能
.
在 get 方法中使用,因为这是表单中一种方便的方法,可以深入到表单内部嵌套的 controlName。例如:form.get('address.line1').value
您可以编写一种执行编码并访问它的方法
base64
,但我认为这不值得付出努力。Stackblitz 演示