【问题标题】:bootstrap timepicker change event引导时间选择器更改事件
【发布时间】:2020-10-20 23:57:16
【问题描述】:

我正在尝试自学 Angular 8。从 angularjs 开始跳跃。我总是找到日期和时间选择器来处理编码中最令人生畏的部分。我非常成功地在 Angular 8 中创建了一个漂亮的反应形式。 与往常一样,我陷入了日期和时间。 所以我使用输入类型日期和时间,它在 chrome 和 IE 中完全没有。 去研究用于救援的引导程序并想出了这个

<div class="input-group col-md-6">  
   <div class="input-group-prepend col-md-6" style="padding: 0; margin: 0;">
      <label class="input-group-text w-100">Reviewers Arrival Time</label>
   </div>
   <div class="form-control" style="height:auto !important;" 
   [ngClass]="{ 'is-invalid': submitted && f.mealSerStartTimeRev.errors, 
   'col-md-4': submitted && f.mealSerStartTimeRev.errors}">
       <ngb-timepicker [(ngModel)]="timeStart" formControlName="mealSerStartTimeRev" 
          show-spinners="false" [meridian]="true" (ngModelChange)="onTimeChange($event)">
       </ngb-timepicker>    
    </div>     

这很好用,ngModelChange 与 ngModel 配合得很好,因为我的表单是反应式的,所以我有 formcontrolname 用于验证获取表单值等 现在我遇到的问题是我收到警告

It looks like you're using ngModel on the same form field as formControlName. 
Support for using the ngModel input property and ngModelChange event with 
reactive form directives has been deprecated in Angular v6 and will be removed 
in Angular v7.

For more information on this, see our API docs here:
https://angular.io/api/forms/FormControlName#use-with-ngmodel

我了解到该消息不能将 ngmodel 与 formcontrolNAme 一起使用。那么我将如何管理更改事件。我需要更改事件。许多业务逻辑发生在更改事件中。任何帮助将不胜感激

【问题讨论】:

  • 你能告诉你为什么首先使用 ngModel 吗?你使用 ngModel 只是为了使用 ngModelChange 吗?
  • 是的。我想要的只是(更改)事件。常规(更改)=“​​onTimeChange($event)”不起作用
  • 请让我提供一个带有解释的答案。

标签: angular twitter-bootstrap


【解决方案1】:

您可以使用可用的 valueChanges,例如 ::

 this.formGroupName.get('mealSerStartTimeRev').valueChanges.subscribe(x => 
--- Logic goes here ----
);

或者,

 this.formGroupName.controls.mealSerStartTimeRev.valueChanges.subscribe(x => 
--- Logic goes here ----
);

两者都可以。

【讨论】:

  • 我是否必须使对象可观察,然后将它们添加到构造函数或 ngOnInit 中。我正在阅读它。我不是很成功。我使用 get 操作的页面加载数据是可观察的,然后更改了值,但断点没有命中代码
  • 不需要做任何可观察的。您使用控件创建的表单组具有一个可观察的 valueChanges 属性。你只需要消耗它。它观察变化并在内部向观察者触发事件
  • 请多多包涵,我不确定我是否完全理解这一点。我的表单 this.dynamicForm = this.formBuilder.group({ mealSerStartTimeRev: [this.timeStart, [Validators.required]], mealSerEndTimeRev: [this.timeEnd, [Validators.required]], });它在 ngOninit 函数中。我在哪里放 this.dynamicform.controls.mealSerStartTimeRev.valueChanges.subscribe(x => --- 逻辑在这里 ---- );断点以识别更改(或更改事件触发)
  • 您可以在 ngOnInit 内部创建表单组后订阅
  • 只有当表单控件的值发生变化时,代码块才会被执行,所以不要担心将它放在 onInit 中。不会对性能造成影响。
猜你喜欢
  • 1970-01-01
  • 2017-03-24
  • 2015-10-21
  • 2019-08-23
  • 2015-06-12
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多