Angular 在更新所有被动窗体的值后,将在输入时调用什么事件

Angular 在更新所有被动窗体的值后,将在输入时调用什么事件,angular,typescript,events,angular-reactive-forms,ngx-bootstrap,Angular,Typescript,Events,Angular Reactive Forms,Ngx Bootstrap,在反应形式的特定输入更改后,角度(v.5或v.6)中发出事件的正确方式是什么 我已经试过这种方法了: (ngModelChange)=“doSomething($event)”(html,基本事件) (bsValueChange)=“doSomething($event)”(html、ngx引导特定事件) 一次输入的基本反应式表单解决方案-订阅事件(ts),如: this.reactiveForm.get('inputName').valueChanges.subscribe( value=>{

在反应形式的特定输入更改后,角度(v.5或v.6)中发出事件的正确方式是什么

我已经试过这种方法了

  • (ngModelChange)=“doSomething($event)”
    (html,基本事件)

  • (bsValueChange)=“doSomething($event)”
    (html、ngx引导特定事件)

  • 一次输入的基本反应式表单解决方案-订阅事件(ts),如:

  • this.reactiveForm.get('inputName').valueChanges.subscribe(
    value=>{this.doSomething(value);}
    );
    
    但在所有情况下都不起作用

    测试:

  • 设置输入值
    A

  • 将输入值更改为
    B

  • 预期行为:

    • doSomething()
      方法中的所有
      reactiveForm.value
      项都具有当前值
    结果:

    方法1。无法在演示中模拟此错误。这是工作,但不在我的大项目工作。在我设置了第一个日期
    A
    ,然后选择日期
    B
    ,我的
    “doSomething”
    以反应式形式记录字段的实际日期(以及$event的值)后,返回
    A
    作为实际字段值。演示工作正常,但我不知道为什么我不能在我的项目中实现这样的行为

    方法2。根本不工作。这是ngx引导的特定事件,但在我选择日期
    B
    之后,我再次在日志中获取日期
    A

    方法3。根本不工作。这是纯反应型溶液。您可以在最后一次输入时对其进行测试。如果您先键入
    A
    ,然后键入
    B
    ,则从
    reactiveForm登录。键入
    B
    后,值['item']
    。所以,即使您订阅了reactiveForm输入的
    valueChanges
    事件,值也不会更改

    我的问题是:
    更新此被动表单值后,我可以使用什么来捕获一个被动表单字段的事件

    这是


    PS:首先,我认为这是ngx引导扩展的问题,但它也不适用于纯反应形式的输入。

    Atiris,答案是:3

    但你看这是不同的

    this.reactiveForm.value['testDateE'] //or this.reactiveForm.value.testDateE
    


    原因是,如果要检查html中的某些内容,必须使用第二种方法。当我们发送submit时,我们提交了reactiveForm.value,没有问题,同样,如果您编写{{reactiveForm.value | json},您将看到实际值

    谢谢,看起来不错。我用
    .get(ITEM).value
    更新了我的演示,对于单独的项目它看起来还可以。如果我想在输入发生任何变化后提交整个表单呢?我显然不能使用
    this.reactiveForm.value
    ,因为它包含旧值(添加到演示中)。在测试之后,我发现我可以使用
    this.reactiveForm.getRawValue()
    (其中包含实际版本的值)插入this.reactiveForm.value的中间部分。。。您是否有任何指向文档的链接,我可以在其中找到有关
    .value
    .getRawValue()
    之间差异的更多信息,以及在哪些情况下可以使用这两个属性之一?您可以使用this.reactiveForm.value发送值。常见的方法是使用…和submit(form){if(form.valid){console.log(form.value)//
    this.reactiveForm.get('testDateE').value;