如何在不使用服务的情况下在子组件和父组件之间传递反应式表单数据

2023-12-03

当我们单击父级按钮时,我们希望使用来自父级的子级反应式表单数据。目前我们正在使用 viewchild 来获取子组件引用。我们正在获取所有静态数据,但没有获取表单填充的数据....................................... ...................................................... ............

parent.component.ts
@ViewChild(DetailsComponent) childrenComponent: childrenComponent;

save(){
let model=this.childrenComponent.buildDetailsModel();
/*here api to save model*/
}
children.component.ts
buildDetailsModel(): Details {
var a = {
  reportedToId: this.detailsForm.get('reportedTo').value,
  reportedOn: this.detailsForm.get('reportedTime').value,
  identifiedById: this.detailsForm.get('identifiedBy').value,
  identifiedOn: this.detailsForm.get('dateAndTimeIdentified').value,
  locationTypeId: this.detailsForm.get('locationType').value,
  addressId: this.detailsForm.get('locationAddress').value,
  AddressLine: this.detailsForm.get('locationOfAddress').value,
  description: this.detailsForm.get('description').value,
  PeopleExposed: this.dataSource
  };
  return a;
}

parent.html 
<child></child>

child.html
<form [formGroup]="detailsForm">
  <div fxLayout="column wrap" fxLayoutGap="12px">

    <div fxLayout="column" fxLayout.lt-sm="column" fxLayout.lt-md="column" 
   fxLayoutGap="24px">

      <div fxFlex="row" fxLayoutGap="24px" fxLayout.lt-md="column">
        <div fxFlex="column">
          <mat-form-field>
            <mat-label>Reported To</mat-label>
            <mat-select matInput formControlName="reportedTo">
              <mat-option value="Test 1">Test 1</mat-option>
              <mat-option value="Test 2">Test 1</mat-option>
            </mat-select>
          </mat-form-field>


          <mat-form-field>
            <input matInput [matDatepicker]="reportedTime" placeholder="Date 
          and time reported" date="true" time="true" 
          formControlName="reportedTime">
            <mat-datepicker-toggle matSuffix [for]="reportedTime"></mat- 
           datepicker-toggle>
            <mat-datepicker #reportedTime></mat-datepicker>
          </mat-form-field>

          <mat-form-field>
            <mat-label>Identified by</mat-label>
            <mat-select matInput formControlName="identifiedBy">
              <mat-option value="Test 1">Test 1</mat-option>
              <mat-option value="Test 2">Test 1</mat-option>
            </mat-select>
          </mat-form-field>
        </div>

将子表单包裹在表单元素内,以便您可以从父表单提交子表单,然后在子组件中注入 FormGroupDirective 以获取父表单的引用

<form (ngSubmit)="save()" [formGroup]="detailsForm"> 
    <app-child></app-child>
    <button type="button">Save</button>
 </form>

然后使用controlContainer在子组件中提供现有的FormGroupDirective

子组件.ts

  form;
  constructor(private fb: FormBuilder, @Host() private parentFor: FormGroupDirective) { }

  ngOnInit() {
    this.form = this.parentFor.form;
    //Add FormControl as per your need
    this.form.addControl('child', this.fb.group({
      name: "",
      email: ""
    }))

  }

子组件.html

<form formGroupName="child">
  <input formControlName="name">
  <input formControlName="email">
</form>

Example:https://stackblitz.com/edit/angular-xusdev

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

如何在不使用服务的情况下在子组件和父组件之间传递反应式表单数据 的相关文章

  • 从数据 URI 解码 QR 码

    我尝试从数据 uri 中解码二维码 var dataUri data image gif base64 R0lGODdh9gD2AIAAAAAAAP ywAAAAA9gD2AAAC decodeQrCode dataUri cb 我已经尝试
  • 解析“流”JSON

    我在浏览器中有一个网格 我想通过 JSON 将数据行发送到网格 但浏览器应该在接收到 JSON 时不断解析它 并在解析时将行添加到网格中 换句话说 在接收到整个 JSON 对象后 不应将行全部添加到网格中 应该在接收到行时将其添加到网格中
  • 如何重置使用 JavaScript 更改的 CSS 属性?

    我的导航按钮的宽度从 100px 增加到 150px 当鼠标悬停在 nav li hover width 150px 但是使用 javascript 我已经做到了 无论选择哪个选项 宽度都将继续为 150px 当选择每个选项时 它会使其他选
  • 使用模数按字母顺序对列表进行排序

    我在获取元素列表并按字母顺序对它们进行排序方面没有任何问题 但我很难理解如何使用模数来做到这一点 更新 这是按我的方式工作的代码 但是 我更喜欢下面提供的答案的可重用性 因此接受了该答案
  • 我想检查 $('#td1').text() === "x" 是否?

    我想检查innerHtml是否有X或O 所以我不能再次添加任何其他东西 但它不起作用 添加检查代码后它就停止了 我在这里尝试做一个简单的XO游戏来更熟悉javascript和jquery 我也不确定是否可以用 jQuery 做到这一点
  • 如何防止 Iframe 在与浏览器交互后弄乱浏览器的历史记录?

    因此 就我而言 我使用 Iframe 将 Grafana 附加到我的页面 这为我提供了漂亮且易于使用的图表 可以注意到 每次在图表上进行放大或缩小 使用鼠标单击 交互后 Grafana 的 Iframe 都会在我的 Angular 页面上触
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • Javascript正则表达式用于字母字符和空格? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一个
  • 除了更改标题之外,如何在 Firefox 中强制另存为对话框?

    有没有办法在 ff 中强制打开 www example com example pdf 的另存为对话框 我无法更改标题 如果您可以将文件以 Base64 格式输出到客户端 则可以使用 data uri 进行下载 location href
  • 从未用 @flow 标记的导入文件中获取类型定义

    TL DR我怎么告诉flow从未声明的导入模块导入类型定义 flow 加长版 流接缝能够从不使用流语法的文件中派生类型 请参阅示例 示例文件 flow js if Math random lt 0 5 var y hello else va
  • Winui 3 中的 WebView2:如何加载嵌套在应用程序中的本地 HTML 文件

    我正在寻找一种用某种 Windows 应用程序包装我的 Ionic Angular 应用程序的方法 我正在研究 Electron 并且有问题 但也在调查我是否刚刚创建了自己的 WinUI3 应用程序并使用了 Webview2 虽然这是 Io
  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 如何在使用页面锚点导航时设置“激活”类以在 Angular 2 中引导导航栏?

    我正在使用 Angular 2 和 Bootstrap 4 创建一个单页网站 我创建了一个始终位于页面顶部的导航栏组件 并且我正在使用页面锚点导航 id 请注意 我还没有创建路由模块 到目前为止还没有必要这样做 导航栏代码如下
  • 在 Angular 6 表单生成器中找不到具有未指定名称属性的控件

    当尝试使用 HTML 文件更新网格表时 我收到此错误消息 在这里 我使用了静态数据来显示表格 并从显示 primeng 表的其他组件导入 并且我添加了一个更新按钮 该按钮具有重定向到另一个页面以更新数据的功能 该问题出现在 HTML 文件的
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • Angular 6 + RxJS 6.0:如何将新元素推送到 Observable 包含的数组

    我从 firebase 服务器分块接收数据 同时渲染该数据需要一个坚持可观察包含数组的库 我不知何故无法将新的数据块推送到可观察到的现有数据块数组 从数据服务中 我通过主题的下一个调用并尝试添加新的 calEvent this homeWo
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐

  • python 库中的“randrange() 的非整数参数 1”

    我使用随机数生成器生成 5 到 10 之间的随机数 能不能这么难 我之前在代码中使用过它 2000 行代码 对于这里来说太多了 并且没有发生编码错误 我的代码对于我的游戏来说只是复活节彩蛋 但它破坏了我的所有代码 def slowp t f
  • AngularJS 和 Express Routing 问题

    我正在使用 AngularJS 和 ExpressJS 并且遇到路由问题 我看到了很多其他帖子 但这些解决方案似乎都不起作用 这是我在 Express 中的路线 module exports function app auth Api ro
  • R 如何在不知道长度的情况下创建 for 循环?

    目前在这方面site我正在抓取镜头图表信息 为了抓取信息 我需要为有多少个镜头创建一个 for 循环 我通过单击 球队统计数据 并查找投篮尝试次数来查找投篮次数 我想做适当的for loop无需找出镜头的数量 我目前正在做的事情 shotc
  • 更新第一行mysql php

    我正在尝试更新数据库中的第一行 我用Limit 1仅更新第一行但什么也没有发生 肯定有匹配的行 但数据库中没有任何变化 这是代码 foreach player fromsite as match player in game querytw
  • loadNibNamed 方法太慢 - 如何使其更快?

    我有一个滚动视图 其中包含大约 40 50 个不同类型的对象 对象的类型是根据对象位置的函数定义的 例如 如果是滚动视图中的第 5 个对象 gt 是 Object1 如果是滚动视图中的第 11 个对象 gt 则是 Object2 类型等 使
  • Python Popen 无法在 Windows PowerShell 中使用正确的编码

    我正在 Windows PowerShell 中运行 Python 脚本 该脚本应使用 Popen 运行另一个程序 然后通过管道传输该程序 实际上是 Mercurial 的输出以在我的脚本中使用 当我尝试在 PowerShell 中执行脚本
  • 在 Java 中逐行读取大型 JSON 文件的快速高效方法

    我有 1 亿条记录JSON文件 需要一种高效且最快的方法来读取数组的数组JSON文件输入java JSON文件看起来像 XYZ ABC XYZ ABC XYZ ABC XYZ ABC XYZ ABC XYZ ABC XYZ ABC XYZ
  • 有使用 pywin32 createprocessasuser 并获取输出的好例子吗?

    我需要使用 pywin32 方法以不同的用户身份创建进程 然后从生成的进程中获取标准输出 标准错误和错误代码 并在进程运行时将输入输入到进程中 问题是 我似乎找不到 createprocess 函数的一个很好的例子 这个问题变得更加复杂 因
  • 如何在seaborn中检索错误栏

    我使用以下函数在seaborn中绘制了条形图 ax sns barplot x Year y Value data df 现在我想根据以下规则为每个条形着色 percentages for bar yerr in zip bars yerr
  • 使用 Kryo 序列化任意 Java 对象(出现 IllegalAccessError)

    动机 为了帮助远程调试 Java 能够请求远程服务器将任意对象发送到我的本地计算机进行检查非常有用 然而 这意味着远程服务器必须能够序列化运行时事先未知的任意java对象 于是我四处打听 偶然发现Kryo序列化库 From Kryo 的文档
  • 在固定 div 内旋转文本

    我正在尝试在页面左侧设置一个固定 div 距离左侧 24px 并从页面顶部延伸到底部 该 div 内将包含导航和标题 我试图将标题旋转 90 度并居中定位到 div 的底部 很难弄清楚这一点 查了很多地方都没有看到类似的例子 我已经用当前的
  • 将 HTML 字符串转换为 DOM 元素?

    有没有办法将 HTML 转换为 div a href a span span div 或者任何其他 HTML 字符串到 DOM 元素中 这样我就可以使用appendChild 我知道我可以执行 innerHTML 和 innerText 但
  • write_csv read_csv 在第 1000 行后使用科学记数法

    使用 write csv 将混合有小整数条目 值小于 1000 和 大 整数条目 值 1000 或以上 的数据框写入 csv 文件 会混合科学和非科学条目 如果前 1000 行是小值 但此后有一个大值 则 read csv 似乎会与这种混合
  • Cassandra-Windows 10

    我已经安装了 apache cassandra 3 11 11 和 DATASTAX DDC 但它们无法在 Windows 10 上运行 它在 cmd 中给出错误 如图所示 我尝试在 powershell 上编写 cassandra bat
  • ASP.NET MVC3如何使用间隔一小时的计时器执行控制器的操作方法

    Hello 我正在使用 asp net mvc3 我有一个特殊的控制器 它有一种特殊的操作方法 我需要使用计时器以一小时为间隔执行此操作方法 任何最好 最有效的想法 thanks 我能够使用 VBScript 和 Windows Sched
  • 如何从 hapi.js 路由处理程序外部进行回复

    我有一个hapi js我想推迟响应的路线 我尝试过存储reply函数并稍后调用它 或者将其包装在 Promise 中 但 hapi 总是立即响应 500 内部服务器错误响应 存储回复以供稍后使用 var pendingReplies ser
  • 使用 == 运算符将 char 与 0x80 进行比较总是结果为 false?

    char byte 0x80 if byte 0x80 cout lt lt This message never gets printed 十六进制值0x80二进制等价于1000 0000 这显然适合一个字节 但是 编译器会警告我有关条件
  • 控制插入符号 R 包中交叉验证的采样

    我有以下问题 在来自 N 个受试者的数据集中 每个受试者有几个样本 我想在数据集上训练模型 但我想确保在每次重采样中 训练集中没有受试者的重复 或者 我会阻止按主题进行交叉验证 那可能吗 如果没有插入符号包 我会做类似的事情 模拟代码 su
  • boost asio Streambuf 调用消耗后不释放内存?

    boost asio streambuf b void handler const boost system error code e std size t size if e std stringstream sstr std strin
  • 如何在不使用服务的情况下在子组件和父组件之间传递反应式表单数据

    当我们单击父级按钮时 我们希望使用来自父级的子级反应式表单数据 目前我们正在使用 viewchild 来获取子组件引用 我们正在获取所有静态数据 但没有获取表单填充的数据 parent component ts ViewChild Deta