Angular 4只读输入更改检测

时间:2019-02-15 07:43:28

标签: javascript jquery html angular typescript

我有以下带有只读输入的代码。我正在尝试从TS File的此只读输入更改值,但是,我无法检测到任何功能的更改。下面是示例。

<input type="text" class="form-control" id="field1" name="field1" readonly [(ngModel)]="field1" (ngModelChange)="onChange()">

ngModelChange在此Senario中不起作用。

3 个答案:

答案 0 :(得分:0)

您可以尝试使用(change)代替(ngModelChange)

这里是some explanation,可以帮助您了解这一点。

答案 1 :(得分:0)

使用这样的输入:

(input)="handle($event)"

并相应地处理打字稿中的事件。

答案 2 :(得分:0)

FormControl来营救!

FormControls和Reactive表单很棒,它将节省您的时间! :)

在您的app.module中标记ReactiveFormsModule,将FormControl导入您的组件aaand ...对于演示,我使用了一个简单的超时更改值来触发valueChanges

myControl = new FormControl('')

constructor() { }

ngOnInit() {
  setTimeout(() => {
    this.myControl.setValue('something');
  }, 2000);

  this.myControl.valueChanges.subscribe((data) => {
    console.log('changed!')
  });
}

和模板:

<input type="text" readonly [formControl]="myControl">

StackBlitz

P.S如果输入此内容是模板驱动形式的一部分,则此方法将不起作用,因为ngModelformControl不应一起使用。因此,您将收到通知。因此,在这种情况下,我建议您采取被动方式;)