在angular中设置表单组控件时如何捕获异常?

How to catch the exception when set form group control in angular?

我有一个表单组。

@Input() readonly formBuilder: FormBuilder;
public myFormGroup :FormGroup;
this.myFormGroup = this.formBuilder.group({name: null});

然后在某个地方我想通过代码修补值。

try {
    this.myFormControl.controls.name.setValue('some value');
} catch (e) {
   console.error(e);
}

但是设置值失败。我的问题是我无法捕捉到错误。在调试中我发现它去了Subscriber.js和方法

SafeSubscribe.prototype._tryOrUnsub = function(fn ,value) {
  try {
    fn.call(this._context, value); // hover it shows value = undefined
 }
   catch (err) {
   this.unsubscribe();
   throw err;
  }
};

所以我还是不知道哪里出了问题。

尝试通过

更新
this.myFormControl.controls.get('name').setValue('some value');

其中 'name' 是表单控件的名称。

此外,在调试时,请在调用您认为会产生错误的代码之前添加 debugger; 一词。它将导致 chrome 停止执行并在 devtools 中调出一个 javascript 调试器。它可以帮助您诊断问题。

自己想办法 控件是一个kendo-datepicker;它需要转换格式才能工作。

<kendo-datepicker [format]="'MM/dd/yyyy'" formControlName = "name"></kendo-datepicker>

和ts代码

this.myFormControl.controls.name.setValue(new Date('some value));

所以诀窍是添加 new Date().

但是我仍然不知道为什么我无法捕捉到错误。无论如何,目前它已经解决了。