Angular中UntypedFormGroup含点路径的get方法调用问题
Angular UntypedFormGroup 含点控件名的取值解决方案
你猜的没错,Angular的FormGroup.get()方法确实会把点号解析为嵌套控件的分隔符,直接传'myfile.pdf'会被当成找myfile控件下的pdf子控件,找不到就会触发空指针异常。
解决方法很直接,用数组形式的路径参数替代字符串,把完整的控件名作为数组的唯一元素传入,Angular就会将其视为字面量处理:
// 添加带点的控件 this.myUntypedFormGroup.addControl('myfile.pdf', new UntypedFormControl('示例内容')); // 正确取值 const fileValue = this.myUntypedFormGroup.get(['myfile.pdf'])?.value;
建议加上可选链操作符?.,就算控件不存在也不会抛出异常,让代码更健壮。
目前Angular并没有提供字符串路径中点号的转义语法,数组形式是官方推荐的处理含特殊字符控件名的标准方式。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

