Angular 2 Reactive Forms:无法找到带有路径的控件

2024-01-02

我尝试将角色动态添加到我的用户/角色应用程序中。我有一个 Formarray,可以在其中显示编辑视图中用户的角色。还有一个用于向用户添加更多角色的按钮。但是当我按下“添加角色”按钮时,我收到以下错误消息:

错误错误:无法找到路径为“rolesArr -> 1 -> name”的控件

在此示例中,我尝试向我要创建的用户添加多个角色。

这是我的代码:

用户-edit.component.html(摘抄)

<div formArrayName="rolesArr" >
<div class="row">
    <div class="col-md-10 col-md-offset-2">
        <button class="btn btn-default"
                type="button"
                (click)="addRole()">Add Role
        </button>
    </div>
</div>
<br>
<div *ngFor="let role of roles.controls; let i=index">
    <div [formGroupName]="i">

        <div class="form-group">
            <label class="col-md-2 control-label" [attr.for]="i">Role</label>

            <div class="col-md-8">
                <input class="form-control"
                        [id]="i" 
                        type="text" 
                        placeholder="Role" 
                        formControlName="name" />
            </div>
        </div>
    </div>
</div>

用户-edit.component.ts(摘抄)

addRole() {
    this.roles.push(this.fb.group(new Roles()));
}

ngOnInit(): void {

    this.userForm = this.fb.group({
        username: ['', [Validators.required, Validators.minLength(3)]],
        firstname: ['', [Validators.required, Validators.minLength(3)]],
        lastname: ['', [Validators.required, Validators.minLength(3)]],
        password: ['', [Validators.required, Validators.minLength(10)]],
        rolesArr: this.fb.array([])
    });

    this.sub = this.activeRoute.params.subscribe(
        params => {
            let id = +params['id']; //converts string'id' to a number
            this.getUser(id);
        }
    );
}
getUser(id: number) {
        this.userService.getUser(id).subscribe(
                user => this.onUserRetrieved(user)
            );
}
onUserRetrieved(user: User): void {
    console.log("OnUserRetrieved: " + user.firstname);
    if (this.userForm) {
        this.userForm.reset();
    }
    this.users = user;

    if (this.users.id === 0) {
        this.pageTitle = 'Add User';
    } else {
        this.pageTitle = `Edit User: ${this.users.username}`;
    }

    //Update the data on the form
    this.userForm.patchValue({
        username: this.users.username,
        firstname: this.users.firstname,
        lastname: this.users.lastname,
        password: this.users.password
    });

    const roleFGs = this.users.roles.map(roles => this.fb.group(roles));
    const roleFormArray = this.fb.array(roleFGs);
    this.userForm.setControl('rolesArr', roleFormArray);
}

我究竟做错了什么?


您应该创建一个带有控件的表单组Roles如下,

createRole() :  FormGroup {
    return this.fb.group({
            name: '',
            type: '',

    });
}

那么你应该按如下方式推动角色,

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

Angular 2 Reactive Forms:无法找到带有路径的控件 的相关文章

随机推荐

  • C++ 字符串文字数据类型存储

    void f char c Hello World 字符串存储在哪里 它有什么属性呢 我只知道它是一个常数 还有什么 我可以从函数体内返回它吗 它与您的二进制文件一起打包 我所说的打包是指硬连线 所以是的 您可以返回它并在其他地方使用它 但
  • 访问 Jenkins 中的构建变更日志

    我一直在绞尽脑汁地试图找到一种方法 将 Jenkins 生成的更改列表 来自 SVN pull 包含到我们的 Testflight 笔记中 我正在使用 Testflight 插件 它有一个注释字段 但詹金斯似乎没有创建任何参数 令牌来嵌入该
  • Java 中的持久数据结构

    有谁知道关于在 Java 中创建和使用持久数据结构的库或至少一些研究吗 我并不是将持久性称为长期存储 而是将持久性称为不变性 请参阅维基百科条目 http en wikipedia org wiki Persistent data stru
  • ASP.NET Identity - 将用户 ID 主键默认类型从字符串更改为 int 以及使用自定义表名称时出错

    我正在使用 Microsoft AspNet Identity 2 0 0 beta1 和 Entity Framework 6 1 0 beta1 2014 年 2 月 11 日发布 当我尝试将用户 ID 主键的默认类型从字符串更改为 i
  • 通过套接字读取和写入字节数据包

    我想通过 Socket 将 Android 设备连接到外部设备 Socket 连接外部设备成功 现在 如果外部设备需要任何数据 则按照以下顺序将字节数据包数据的请求发送到套接字 如果外部设备接收数据正确 则发送字节数据作为响应 参数 方法名
  • 如何使用 C# 从 BIOS 获取 CPU 温度信息?

    如何使用 C 从 Bios 获取 CPU 温度信息 我尝试了中的代码CPU温度监控 https stackoverflow com questions 2923984 cpu temperature monitoring c 但没有运气 e
  • 将纯字符串转换为 MAC 地址格式

    我正在尝试将一些字符串输入转换为正确的格式以使用 MAC 地址 所以我需要转换 00A0C914C829 to 00 A0 C9 14 C8 29 我有这个PowerShell脚本来实现这一点 string 00A0C914C829 out
  • 人民博士。数据读取器 - 类型错误:字符串索引必须是整数

    直到今天 这段代码都运行得很好 现在我收到此错误消息 TypeError 字符串索引必须是整数 import pandas datareader as pdr Equity Indices GSPC ES F NQ F YM F RUT D
  • 从 POST 解码 base64 以在 PIL 中使用

    我正在 Flask 中制作一个简单的 API 它接受以 base64 编码的图像 然后使用 Pillow 对其进行解码以进行进一步处理 我看过一些例子 1 https stackoverflow com questions 19908975
  • 单机MongoDB如何避免服务器故障导致数据丢失?

    我读到 mongoDB 不会立即将数据写入磁盘 它会定期执行此操作 关于如何处理这个问题有什么想法吗 您可以启用日记功能 journal 查看http www adathedev co uk 2011 03 mongodb journali
  • 主窗体退出时,窗体关闭时不弹出窗口(阻止弹出窗口并强制关闭其他窗体)

    如果这个问题重复出现 请接受我的歉意 我搜索了现有的问题和解决方案 但没有找到解决我的问题的确切解决方案 我正在开发winform应用程序 我有一个主form1 它创建form2 Form2 有关闭按钮和覆盖的 FormClosing 方法
  • 如何检测具有特定签名的JavaScript函数是否已被注册?

    假设您有两个具有以下签名的函数 addClass class addClass class duration These live in a third party library no prizes for guessing which
  • 更新数组对象值

    我想更新我保存在工厂中的全局数组中的一些值 我使用 get 方法来获取数据 但 set 函数不知何故无法完成其工作 并且数组中的值不会更新 我缺少什么 factory messageList function var Messages ti
  • crash_rows 未折叠并且更新包无法修复

    这个脚本对我不起作用 输出的表没有折叠行 我已经更新了我的所有软件包 有人可以验证吗 remove list ls library knitr library kableExtra collapse rows dt lt data fram
  • Matplotlib:在远程计算机上显示绘图

    我有一个 python 代码在名为 A 的远程计算机上进行一些计算 我通过以下方式连接到 Assh来自一台名为 B 的机器 有没有办法让B机上显示这个数字 当然 您可以启用 X11 转发 通常这是通过传递来完成的 X or Y选项ssh当您
  • 为什么 Font Awesome 无法在我的 jekyll 构建的 Github 网站上运行?

    我正在使用 Jekyll 构建我的博客网站 该网站由 Github 托管 并且我正在尝试合并 font awesome fa 图标没有显示 现在我的 Github 页面也没有更新我最新的博客文章 我尝试将字体很棒的样式表链接到我的CSS 我
  • coqide - 无法从同一文件夹加载模块

    我无法加载 CoqIde 中同一文件夹中的模块 我正在尝试从 Software Foundations 加载源代码 我正在包含 SF 源代码的文件夹中运行 coqidecoqide or coqide 然后打开并运行该文件后 我收到此错误
  • 如何将光标指针属性应用于(单击)事件处理程序?

    i class cursor pointer i 我们的代码库有很多这样的冗余类 我一直在寻找一种在有 单击 事件处理程序时应用光标指针属性的方法 在 Angular 2 之前 您可以将 css 应用到 Angular 属性 但这已不再可能
  • 获取Excel文件的内容创建日期

    我的目标是显示 Excel 文件的日期 但 如果我从互联网下载该文件 则会自动将创建日期和修改日期设置为当前时间和日期 我查看了文件的属性 发现在 详细信息 部分中的个人信息下 有一个名为 源 的部分 其中有一个名为 使用原始日期文件 创建
  • Angular 2 Reactive Forms:无法找到带有路径的控件

    我尝试将角色动态添加到我的用户 角色应用程序中 我有一个 Formarray 可以在其中显示编辑视图中用户的角色 还有一个用于向用户添加更多角色的按钮 但是当我按下 添加角色 按钮时 我收到以下错误消息 错误错误 无法找到路径为 roles