根据官网介绍,把ng-zorro-antd加入angular源码中,程序正常启动。但是当插入form进行表单验证时,程序老是提示找不到formGroup。网上说需要在app.module.ts模块中加入ReactiveFormsModule,加完以后依然报错。如果用官网介绍的命令行添加代码后,运行正常。经过摸索,发现了问题。先把原来的代码记录下来:

    app.module.ts

    1. import { BrowserModule } from '@angular/platform-browser';
    2. import { NgModule } from '@angular/core';
    3. import { AppRoutingModule } from './app-routing.module';
    4. import { AppComponent } from './app.component';
    5. import { IconsProviderModule } from './icons-provider.module';
    6. import { NgZorroAntdModule, NZ_I18N, en_US, NZ_ICONS } from 'ng-zorro-antd';
    7. import { FormsModule, ReactiveFormsModule } from '@angular/forms';
    8. import { HttpClientModule } from '@angular/common/http';
    9. import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
    10. import { registerLocaleData } from '@angular/common';
    11. import en from '@angular/common/locales/en';
    12. import { IconDefinition } from "@ant-design/icons-angular";
    13. import * as AllIcons from "@ant-design/icons-angular/icons";
    14. import { BasicFormModule } from './pages/basic-form/basic-form.module';
    15. import { FormValidateComponent } from './form-validate/form-validate.component';
    16. import { MonitorModule } from './pages/monitor/monitor.module';
    17. import { WorkplaceModule } from './pages/workplace/workplace.module';
    18. registerLocaleData(en);
    19. @NgModule({
    20. declarations: [
    21. AppComponent,
    22. ],
    23. imports: [
    24. BrowserModule,
    25. IconsProviderModule,
    26. FormsModule,
    27. ReactiveFormsModule,
    28. NgZorroAntdModule,
    29. AppRoutingModule,
    30. HttpClientModule,
    31. BasicFormModule,
    32. BrowserAnimationsModule,
    33. MonitorModule,
    34. WorkplaceModule,
    35. BasicFormModule
    36. ],
    37. providers: [
    38. { provide: NZ_I18N, useValue: en_US },
    39. ],
    40. bootstrap: [AppComponent]
    41. })
    42. export class AppModule { }

    代码结构如下

    image.png

    app-routing.module.ts

    1. import { NgModule } from '@angular/core';
    2. import { Routes, RouterModule } from '@angular/router';
    3. import { MonitorComponent } from './pages/monitor/monitor.component';
    4. import { WorkplaceComponent } from './pages/workplace/workplace.component';
    5. import { BasicFormComponent } from './pages/basic-form/basic-form.component';
    6. import { FormValidateComponent } from './form-validate/form-validate.component';
    7. const routes: Routes = [
    8. { path: '', pathMatch: 'full', redirectTo: '/welcome' },
    9. { path: 'welcome', loadChildren: () => import('./pages/welcome/welcome.module').then(m => m.WelcomeModule) },
    10. { path: 'monitor', component: MonitorComponent },
    11. { path: 'workplace', component: WorkplaceComponent },
    12. { path: 'basicForm', component: BasicFormComponent },
    13. { path: 'formvalidate', component: FormValidateComponent }
    14. ];
    15. @NgModule({
    16. imports: [RouterModule.forRoot(routes)],
    17. exports: [RouterModule]
    18. })
    19. export class AppRoutingModule { }

    在appRoutingModule中,welcome是作为异步路由来懒加载。另外几个由于不是懒加载,只是把其对应的component加入路由模块下,而他们的模块并没有注入到app.module中,因为一直报错说找不到,以monitor.ts为例

    1. import { NgModule } from '@angular/core';
    2. import { CommonModule } from '@angular/common';
    3. import { MonitorComponent } from './monitor.component';
    4. @NgModule({
    5. declarations: [MonitorComponent],
    6. imports: [
    7. CommonModule
    8. ]
    9. })
    10. export class MonitorModule { }

    我把MonitorComponent加入到了MonitorModule中,而MonitorModule并没有注入到主模块下。

    问题解决:

    讲MonitorModule,BasicFormModule, WorkplaceModule 加入到App.module中

    image.png