我在一个组件中有一个下拉列表。每次下拉值更改时,我都会尝试检测另一个组件中的更改后的值。但是我有一个奇怪的问题。有时,当我更改dropdown的值时,它会触发ngOnChanges,有时却不会。知道为什么。
这是我的代码:
AppComp
html
<td width="20%" class="cursor">
<select (change)="changedvalue($event)" class="form-control" name="level">
<option hidden selected> -- Select options -- </option>
<option>Level 1</option>
<option>Level 2</option>
</select>
</td>
<td class="cursor">
<app-other-comp [group]="group"></app-other-comp>
</td>
ts
group: string;
changedvalue(event: Event) {
const value = (<HTMLSelectElement>event.target).value;
this.group = value;
console.log('From AppComp' + this.group);
}
OtherComp
ts
@Input() group: string;
ngOnChanges() {
console.log('Changed : ' + this.group);
}
正如在浏览器控制台中一样,您可以看到有时它检测到更改,有时却没有检测到。
未检测到更改:
发现更改:
答案 0 :(得分:-1)
change函数。您可以像这样使用ngModel和ngModelChange函数:
<td width="20%" class="cursor">
<select (ngModelChange)="changedvalue($event)" [(ngModel)]="value" class="form-control" name="level">
<option hidden selected> -- Select options -- </option>
<option>Level 1</option>
<option>Level 2</option>
</select>
</td>
<td class="cursor">
<app-other-comp [group]="group"></app-other-comp>
</td>