Angular中的ViewChildren无法获取已更改的响应式表单值。
创始人
2024-10-31 10:30:48
0

在Angular中,使用ViewChildren获取元素或组件时,可能无法获取已更改的响应式表单值。这是因为ViewChildren返回的是QueryList,而QueryList是一个可观察对象,并且只会在组件初始化时或在ngOnChanges生命周期钩子中发出一次。

要解决这个问题,可以使用rxjs中的valueChanges方法来订阅响应式表单的值更改。

以下是一个示例代码,演示如何使用ViewChildrenvalueChanges来获取已更改的响应式表单值:

import { Component, QueryList, ViewChildren, AfterViewInit } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';
import { debounceTime } from 'rxjs/operators';

@Component({
  selector: 'app-example',
  template: `
    
` }) export class ExampleComponent implements AfterViewInit { myForm: FormGroup; @ViewChildren('input') inputs: QueryList; constructor() { this.myForm = new FormGroup({ input1: new FormControl(''), input2: new FormControl('') }); } ngAfterViewInit() { this.inputs.changes.pipe(debounceTime(300)).subscribe(() => { this.getFormValues(); }); } getFormValues() { console.log(this.myForm.value); } }

在上面的代码中,我们首先创建了一个包含两个输入字段的响应式表单。然后,我们使用ViewChildren来获取这两个输入字段,并在ngAfterViewInit钩子中订阅QueryList的更改。我们使用debounceTime运算符来延迟300毫秒,以便在值更改后获取表单的最新值。最后,我们在getFormValues方法中打印表单的值。

通过这种方式,我们可以确保在每次表单值更改时都能及时获取到最新的值。

相关内容

热门资讯

透视辅助!wepoker软件辅... 透视辅助!wepoker软件辅助程序,wepoker怎么设置房间-都是是真的有辅助脚本(哔哩哔哩)一...
透视了解!wepoker作弊视... 透视了解!wepoker作弊视频,wepoker俱乐部辅助-都是有辅助脚本(哔哩哔哩)1、完成辅助器...
透视有挂!aapoker如何设... 透视有挂!aapoker如何设置胜率,aapoker免费透视脚本-都是有辅助插件(哔哩哔哩)1、游戏...
透视揭露!wepoker开辅助... 透视揭露!wepoker开辅助能查到吗,wepoker有插件吗-一贯一直总是有辅助攻略(哔哩哔哩)1...
透视分享!wpk辅助插件,wp... 透视分享!wpk辅助插件,wpk有那种辅助吗-原来一直总是有辅助工具(哔哩哔哩)1、超多福利:超高返...
透视科普!wepoker免费脚... 透视科普!wepoker免费脚本咨询,wepoker辅助透视-其实存在有辅助插件(哔哩哔哩)1、用户...
透视解迷!大菠萝789辅助器下... 透视解迷!大菠萝789辅助器下载,cloudpoker作弊-真是存在有辅助攻略(哔哩哔哩)1、大菠萝...
透视科普!wepoker辅助器... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】很多玩家在这款游戏中打...
透视必备!wepoker插件辅... 透视必备!wepoker插件辅助,wepoker有透视底牌吗-真是有辅助教程(哔哩哔哩)1、让任何用...
透视必备!pokerworld... 透视必备!pokerworld修改器,悦扑克脚本-本来真的有辅助工具(哔哩哔哩)1、pokerwor...