Angular报错问题:Can't bind to 'formGroup' since it isn't a known property of 'form'

2023-05-16

Angular报错问题:Can’t bind to ‘formGroup’ since it isn’t a known property of ‘form’

报错提示:

Uncaught Error: Template parse errors:
Can't bind to 'formGroup' since it isn't a known property of 'form'. ("</p>
<form [ERROR ->][formGroup]="loginForm">
  <label>
"): ng:///AppModule/LoginComponent.html@7:6

问题原因:

没有导入表单模块 FormsModule

解决办法:

@angular/forms 中导入 ReactiveFormsModule 模块。

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

修改后代码实例

组件LoginComponent(login.component.ts)代码如下:

import { Component }   from '@angular/core';
import { Router }      from '@angular/router';
import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})
export class LoginComponent {
  
  message: string;
  public userId: number = 0;
  public storeId: number = 0;

  constructor(
    private fb: FormBuilder,
    public router: Router
  ) {
    this.setMessage();
  }

  loginForm = this.fb.group({
    username: ['', Validators.required],
    userpass: ['', Validators.required],
    captcha:  [''],
  });

  onLogin() {
    console.log(this.loginForm)
  }
}

Login模板 login.component.html 代码:

<form [formGroup]="loginForm">
  <label>
    account: <input type="text" formControlName="username">
  </label>
  <label>
    password: <input type="text" formControlName="userpass">
  </label>
  <button type="button" (click)="onLogin()" [disabled]="!loginForm.valid">Submit</button>
</form>

项目入口模块 app.module.ts 代码如下:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { LoginComponent } from './auth/login/login.component';
// 引入表单模块
import { FormsModule, ReactiveFormsModule } from '@angular/forms';

@NgModule({
  declarations: [
    AppComponent,
    PageNotFoundComponent,
    DashboardComponent,
    LoginComponent
  ],
  imports: [
    BrowserModule,
    UsersModule,
    // 导入表单模块
    FormsModule,
    ReactiveFormsModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

参考链接:

https://stackoverflow.com/questions/39152071/cant-bind-to-formgroup-since-it-isnt-a-known-property-of-form

更多内容,请查看项目代码:

https://github.com/cnwyt/angular-tour-of-heroes

[END]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular报错问题:Can't bind to 'formGroup' since it isn't a known property of 'form' 的相关文章

随机推荐

  • ARM处理器基本指令大全

    目录 一 ARM的7种运行模式和2种工作状态 二 ARM支持的异常类型 三 ARM基本指令及功能描述 一 ARM的7种运行模式和2种工作状态 1 七种运行模式 处理器工作模式 特权模式 异常模式 说明 用户 xff08 user xff09
  • 计算机组成原理4(程序查询方式、程序中断方式、DMA方式及其I/O接口电路)

    文章目录 一 程序查询方式二 程序中断方式三 DMA方式 一 程序查询方式 1 程序查询方式的接口电路 2 符号说明 amp 与非门B工作触发器D完成触发器 3 程序查询工作过程 xff08 输入 xff09 xff08 1 xff09 当
  • C/C++库函数math用法案例篇一

    文章目录 1 绝对值函数 xff08 abs xff0c fabs xff0c labs xff09 2 三角函数 xff08 cos xff0c sin xff0c tan xff09 3 反三角函数 xff08 acos xff0c a
  • C/C++库函数math用法案例篇二

    文章目录 1 floor函数 xff08 求不大于x的最大整数 xff09 2 fmod函数 xff08 返回a b的余数 xff09 3 frexp xff08 将浮点数分解成尾数和指数 xff09 5 modf函数 xff08 将浮点数
  • 从C语言到C++的进阶之C到C++的转变(篇一)

    文章目录 一 C语言到C 43 43 语言1 C语言2 C 43 43 语言3 C与C 43 43 的联系 二 C到C 43 43 的明显转变1 C 43 43 的关键字系列2 函数必列参数3 指针类型相同才能赋值4 对struct等封装类
  • 从C语言到C++的进阶之C++的非类新特性(篇二)

    文章目录 1 输出输入使用 cout lt lt 和 cin gt gt 2 访问外部变量3 从指针到引用4 引用与指针的比较5 返回引用类型的函数 1 输出输入使用 cout lt lt 和 cin gt gt span class to
  • 从C语言到C++的进阶之C++的非类新特性(篇三)

    文章目录 1 从宏到内联函数2 函数参数的缺省值3 C 43 43 的常量与引用4 函数重载5 new运算和delete运算 1 从宏到内联函数 xff08 1 xff09 写一个返回最大值的宏定义 xff08 C语言 xff09 span
  • 从C语言到C++的进阶之面向对象、using与命名空间(篇四)

    文章目录 一 面向过程到面向对象二 namespace的使用三 using的用法 一 面向过程到面向对象 1 面向过程编程思想 C语言是典型的面向过程编程语言 xff0c 面向过程是一种以过程为中心的编程思想 xff0c 通过分析出解决问题
  • Angular执行测试报错: 'router-outlet' is not a known element

    本机环境 xff1a ng version Angular CLI 7 1 1 Node 10 11 0 OS darwin x64 Angular 7 1 1 animations cli common compiler compiler
  • 从C语言到C++的进阶之一些C基础上的增强用法(篇五)

    文章目录 1 全局变量的检测增强2 新增Bool类型3 三目运算的增强4 指针与常量的引用 xff08 别名 xff09 5 内联函数的限制6 函数的占位参数7 extern 34 C 34 的用法 1 全局变量的检测增强 C 43 43
  • C语言经典排序算法之快速排序(详解)

    文章目录 一 何为算法二 排序算法三 快速排序算法 一 何为算法 1 算法 xff08 Algorithm xff09 xff0c 是程序设计的灵魂 xff0c 它是利用系统的方法描述解决问题策略的机制 2 正确算法应满足的性质 xff1a
  • C语言经典查找算法之二分查找(详解)

    文章目录 一 查找算法二 二分查找算法 一 查找算法 查找是在大量的信息中寻找一个特定的信息元素 xff0c 在计算机应用中 xff0c 查找是常用的基本运算 xff0c 例如编译程序中符号表的查找 二 二分查找算法 1 算法思想 该查找算
  • C语言经典递推算法之杨辉三角展开(详解)

    文章目录 一 递推算法二 杨辉三角展开 一 递推算法 这是一种比较简单的算法 xff0c 即通过已知条件 xff0c 利用特定关系得到中间结论 xff0c 然后得到最后结果的算法 递推算法可以分为顺推和逆推两种 二 杨辉三角展开 1 杨辉三
  • C语言经典迭代算法之求解函数定积分(详解)

    文章目录 一 迭代算法二 梯形法求解定积分 一 迭代算法 1 辗转迭代 迭代法也称辗转法 xff0c 它是一种不断用旧的变量值递推得到新值的过程 迭代法是用计算机解决问题的一种基本方法 xff0c 它利用计算机运算速度快 适合做重复性操作的
  • C语言经典递归算法之和式分解

    文章目录 一 递归算法二 和式分解 一 递归算法 1 递归 递归就是自己调用自己 xff0c 它是设计和描述算法的一种有力工具 xff0c 常常用来解决比较复杂的问题 递归是一种分而治之 xff0c 将复杂问题转化难为简单的问题的求解方法
  • C语言经典枚举算法之谁在说谎(详解)

    文章目录 一 枚举算法二 谁在说谎问题 一 枚举算法 1 枚举 枚举算法是我们在日常中使用到的最多的一个算法 xff0c 它的核心思想就是 枚举所有的可能 枚举法的本质就是从所有候选答案中去搜索正确的解 2 使用枚举算法需要满足两个条件 1
  • C语言经典贪心算法之加油站问题(详解)

    文章目录 一 贪心算法二 加油站问题 一 贪心算法 贪心算法暗示一种不追求最优解 xff0c 只希望找到较为满意解的方法 贪心算法省去了为找最优解要穷尽所有可能而必须耗费大量时间 xff0c 因此它一般可以快速得到较为满意的答案 贪心算法常
  • C语言经典回溯算法之解决数的组合问题(详解)

    文章目录 一 回溯算法二 数的组合问题 一 回溯算法 1 回溯法 也叫试探法 xff0c 实际上是一个类似枚举的搜索尝试过程 xff0c 主要是在搜索尝试过程中寻找问题的解 xff0c 当发现已不满足求解条件时 xff0c 就 回溯 返回
  • C语言经典矩阵算法之打印魔方阵(详解)

    文章目录 一 矩阵算法二 打印魔方阵 一 矩阵算法 1 矩阵 矩阵 xff0c 是线性代数中的基本概念之一 一个m n的矩阵就是m n个数排成m行n列的一个数阵 由于它把许多数据紧凑的集中到了一起 xff0c 所以有时候可以简便地表示一些复
  • Angular报错问题:Can't bind to 'formGroup' since it isn't a known property of 'form'

    Angular报错问题 xff1a Can t bind to formGroup since it isn t a known property of form 报错提示 xff1a Uncaught Error span class t