Я работаю над приложением Angular 5.У меня есть выпадающий компонент (, который содержит следующий код в файле HTML, dropdown.component.html
<p-dropdown [options]="data" [(ngModel)]="selectedFilterValue" placeholder="Please Select" [style]="{width: '100%'}" (onChange)="selectedValueChanged($event)"></p-dropdown>
dropdown.component.tc
export class DropdownComponent implements OnInit, OnChanges {
constructor() { }
@Input() ddOptions: string[] = [];
@Input() filterName: string;
@Input() clearDropDown: boolean = false;
Я использую этот раскрывающийся компонент в своей родительской базе, где я отображаю 3 раскрывающихся списка, код выглядит следующим образом: parent.component.html
<div class="container">
<div class="row">
<div class="col-4">
<div class="d-flex flex-row align-items-center">
<span class="col-xs-auto">PBG:</span>
<arcm-dropdown class="col" [ddOptions]="pbgFilterValues" [clearDropDown]="clearDropdownObservable | async" (filterValue)="selectedValueChanged($event,FilterName.PBG)"></arcm-dropdown>
</div>
</div>
<div class="col-4">
<div class="d-flex flex-row align-items-center">
<span class="col-xs-auto">Wafer Size:</span>
<arcm-dropdown class="col" [ddOptions]="waferSizeFilterValues" [clearDropDown]="clearDropdownObservable | async" (filterValue)="selectedValueChanged($event,FilterName.WaferSize)"></arcm-dropdown>
</div>
</div>
parent.component.ts
clearFilters(e:any):void{
this.clearDropdownSubject.next(true);
}
Теперь яна родительской странице есть кнопка с именем «очистить фильтр», и при нажатии этой кнопки я получаю значение из моего объекта BehaviorSubject как истинное. Это значение подсчитывается дочерним выпадающим компонентом. Проблема: В первый раз, когда я передаю значение как «true», дочерний компонент (выпадающий компонент) запускается ngOnChanges, но когда я снова передаю то же значение, ngOnchang не запускается, и я знаю почему. Что мне делать в этой ситуации.
Я думал о том, чтобы испускать случайный номер вместо логического, но не рандаНомер om иногда может быть одним и тем же, и моя кнопка «Очистить фильтр» не будет работать.