首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >角7 ngModelChange不触发

角7 ngModelChange不触发
EN

Stack Overflow用户
提问于 2020-04-28 22:33:33
回答 1查看 1.2K关注 0票数 0

当我的输入属性绑定在我的父组件中更改时,我试图在ngModelChange上调用一个函数,但它不起作用。

https://stackblitz.com/edit/angular7-playground-bp1736

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-29 01:22:38

而不是:

代码语言:javascript
代码运行次数:0
运行
复制
 <select [(ngModel)]="teste" (ngModelChange)="onChange($event)">

使用(不使用“一箱香蕉”):

代码语言:javascript
代码运行次数:0
运行
复制
 <select [ngModel]="teste" (ngModelChange)="onChange($event)">

在您的stackblitz演示中,您试图通过切换teste变量的值来更新ngModel,显然,在评论中,您期望会因为它而触发。这不会发生的。ngModelChange将在组件更改teste值时触发,而不是在teste更新ngModel值时触发。

如果您想在teste更改时运行任何方法,您可以: 1.观察控件值的变化2.使用setter/getter

1.观察控件的变化

代码语言:javascript
代码运行次数:0
运行
复制
<select [ngModel]="teste" #justATest="ngModel" (ngModelChange)="onChange($event)">

然后,在打字稿上:

代码语言:javascript
代码运行次数:0
运行
复制
@ViewChild('justATest'): _ngModelMonitoring: NgModel;

ngAfterViewInit() {
  this._ngModelMonitoring.valueChanges.subscribe(console.log);
}

2.使用设置器/吸气器

代码语言:javascript
代码运行次数:0
运行
复制
private _teste: string;
@Input()
get teste() { return this._teste; } 
set teste(value: string) {
  this._teste = value;
  console.log('Teste value changed: ', value);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61491123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档