带ViewChild的代码中的Angular 5触发器事件
在角度上,是否可以通过typescript中的方法触发HTML中定义的更改事件 我通过ViewChild抓取选择器 @ViewChild'org3'org3选择器:HTMLSelectElement; 并且该元素有一个更改事件集:带ViewChild的代码中的Angular 5触发器事件,angular,angular5,viewchild,Angular,Angular5,Viewchild,在角度上,是否可以通过typescript中的方法触发HTML中定义的更改事件 我通过ViewChild抓取选择器 @ViewChild'org3'org3选择器:HTMLSelectElement; 并且该元素有一个更改事件集: <select class="form-control" id="orgLevel3" name="orgLevel3" #org3 (change)="onOrg3Change($event.target.value, org4, org5)"
<select class="form-control" id="orgLevel3" name="orgLevel3" #org3
(change)="onOrg3Change($event.target.value, org4, org5)">
<option>-- Select --</option>
<option *ngFor="let name of validOrgLevel3" value="{{name.id}}">
{{name.name}}
</option>
</select>
其中org4和org5只是另外两个select元素
如果我希望根据我通过代码所做的事情调用该方法,比如手动更改选择的值,如果我以某种方式触发该事件,或者我的代码是否应该手动调用onOrg3Change方法,因为我已经获得了对select elemetn的引用?一旦值发生更改,您需要手动触发事件。Angular不知道任何html元素值的值是否会从代码中更改,这意味着不会通过交互进行更改 可以通过以下方式发出事件:
@ViewChild('org3') org3: ElementRef;
this.org3.nativeElement.value = 'two';
this.org3.nativeElement.dispatchEvent(new Event('change'));
看到这个简单的我看到你的例子是可行的,但是当我设置我的值时,它实际上根本没有改变下拉列表:我将它设置为一个id,它肯定在validOrgLevel3数组中。我没有在控制台中得到任何错误,但是选择器没有改变。它确实改变了,我已经用完全相同的代码更新了演示链接。再次检查演示。