In AngularJS 1.x, the ng-model directive was baked into the core framework. This is no longer the case. The @angular/core package doesn't contain a form-handling library. It only provides the key primitives we can use to build one.
Of course, making everyone to build their own would not be practical. And that's why the Angular team built the @angular/forms package with two modules: FormsModule and ReactiveFormsModule.
FormsModule implements AngularJS-style form handling. We create a form by placing directives in the template. We then use data bindings to get data in and out of that form.
ReactiveFormsModule is another take on handling input, where we define a form in the component class and just bind it to elements in the template. We tend to use reactive programming to get data in and out of the form, hence the name "reactive".
At first glance, these two modules seem very different...