Javascript FormGroup对象的控件和get方法之间有什么区别?

Javascript FormGroup对象的控件和get方法之间有什么区别?,javascript,angular,typescript,angular-reactive-forms,Javascript,Angular,Typescript,Angular Reactive Forms,我有两行代码,它们的作用基本相同,即: this.data.affiliateLinkUrl = this.bookLinkForm.controls['affiliateLinkUrl'].value; this.data.affiliateLinkUrl = this.bookLinkForm.get('affiliateLinkUrl').value; 然而,第二个原因是,当在MatDialogRef引用上调用方法的正上方使用此代码时,MatDialogRef对象突然变得未定义。以下

我有两行代码,它们的作用基本相同,即:

this.data.affiliateLinkUrl = this.bookLinkForm.controls['affiliateLinkUrl'].value;


this.data.affiliateLinkUrl = this.bookLinkForm.get('affiliateLinkUrl').value;
然而,第二个原因是,当在
MatDialogRef
引用上调用方法的正上方使用此代码时,
MatDialogRef
对象突然变得未定义。以下是代码片段供参考:

      if(status.success){
        this.notificationService.notify('success','Success', status.info);
        this.data.title = this.bookLinkForm.controls['title'].value;
        this.data.content = this.bookLinkForm.controls['content'].value;
        this.data.affiliateLinkUrl = this.bookLinkForm.get('affiliateLinkUrl').value;
        this.dialogRef.close(this.data);
      }
当我以这种方式获得affiliateLinkUrl时,dialogRef突然变得未定义,当我使用controls方法时,一切都很好。没有其他错误可以解释这一点。dialogRef对象在构造函数中初始化


有谁能告诉我是什么导致了这种情况,以及方法
控件
获取
之间的区别是什么?

根据您的问题“方法控件和获取之间的区别是什么?”

从抽象控件

控件
:子控件的集合。每个子项的密钥是其注册时使用的名称


我认为现在的区别很明显:)

好的,那么您应该只在对获取控件集合感兴趣时使用控件?是吗?不仅如此。您还可以通过注册名称获取特定的
控件
,如示例中所示:
fg.controls['controlName']
。如果您有嵌套的formGroup,并且希望检索第二层或三维层中的一些控件-在这种情况下,您应该使用
fg.get('level1.level2.level3')
。您也可以使用控件集合存档此控件,但语法会有点困难。为此创建了一个新的控件,以查看真正的区别:)
  /**
   * Retrieves a child control given the control's name or path.
   * @param path A dot-delimited string or array of string/number values that define the path to the
   * control.
   * ### Retrieve a nested control
   * For example, to get a `name` control nested within a `person` sub-group:
   * * `this.form.get('person.name');`
   * -OR-
   * * `this.form.get(['person', 'name']);`
   */
  get(path: Array<string|number>|string): AbstractControl|null { return _find(this, path, '.'); }
constructor(controls: {
    [key: string]: AbstractControl;
}, validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null)