我有一个 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”的控件。
是否有任何方法可以对句点字符进行转义,以便将其作为路径字符串的文字部分,而不是假设存在子控件?
非常感谢。
为什么要用表单控件名称作为文件名,它应该定义为易于理解的内容,例如
file1
或myfilePdf
之类的东西。
据我所知,您不能在 get 方法中使用
.
,因为这是表单中一种方便的方法,可以深入到表单深处的嵌套 controlName。例如:form.get('address.line1').value
您可以编写一个进行
base64
编码并访问它的方法,但我认为这不值得付出努力。
...
export class App {
form = new FormGroup({
[this.controlNameAllowDots('my-file.pdf')]: new FormControl(null),
});
ngOnInit() {
debugger;
console.log(this.form.get(this.controlNameAllowDots('my-file.pdf'))!.value);
}
controlNameAllowDots(name: string) {
return btoa(name);
}
}