我怎么知道 `FormsModule` 和 `ngModel` 之间的关系?

How can I know the relation between a `FormsModule` and `ngModel`?

来自 angular 英雄编辑器教程,我有一个关于 FormsModule 的问题。

在这部分中,如果不导入,演示将无法运行 FormsModulehttps://angular.io/tutorial/toh-pt1#the-missing-formsmodule

The missing FormsModule
Notice that the app stopped working when you added [(ngModel)].

然后

import { FormsModule } from '@angular/forms';

并将其添加到AppModuleimports中:

@NgModule({
  declarations: [
    AppComponent,
    HeroesComponent
  ],
  imports: [
    BrowserModule,
    FormsModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

会好的。

我的问题是我找不到FormsModulengModel之间的任何关系,我只是在这里导入FormsModule,而ngModel在另一个地方工作,像魔法一样。

我也去找FormsModule的定义,很简单:

export declare class FormsModule {
}

所以如果没有文档,代码中就没有线索表明 ngModel 来自 FormsModule。我虽然某个地方可能有类似 import ngModel from FormsModule 的东西,但没有。

Angular 团队使用的模式是他们到处都有 public_api.d.ts 文件,这些文件定义了导出。在这种情况下,如果您转到父文件夹,您将找到该文件。然后您会看到它全部从 ./src/forms.d.ts 导出,如果您查看该文件,您会发现该模块实际导出的所有内容。

话虽如此,在使用库时,文档应该始终是您首先需要查看的地方,而不是类型定义或源代码。通常它都在文档中,当然在一些 shadier 库的情况下它可能不是。