СПРАВКА: После того, как пользователь вернулся с details/:uuid
, запомните и отобразите фильтр, выбранный перед вводом URL выше.У меня проблемы с отображением "запомненного" фильтра.Я не хочу использовать FormControlName/ngModel
Фильтр выглядит так:
<ng-select
#ngSelect
(change)="onSomeEvent($event)"
(clear)="returnToInitialTableState()"
[items]="someItems"
bindLabel="name"
bindValue="id"
labelForId="state"
placeholder="Someting"
clearAllText="Clear">
</ng-select>
...
@ViewChild(NgSelectComponent) ngSelect: NgSelectComponent
ngOnInit() {
this.getSomeItems();
this.locationSubscription = this.location.subscribe(x => {
if(x.type == 'popstate' && x.url == '/some/url') {
this.subscribeToFilterObservable();
}
})
}
this.subscribeToFilterObservable() {
this.someFilterBehaviorSubject.filterObservable.subscribe(
data => {
this.observableFilterOne = data.filterId;
if(this.observableFilterOne) {
var a =this.ngSelect.itemsList
.findItem(this.observableFilterOne);
if(a){
this.ngSelect.itemsList.select(a)
console.log(this.ngSelect.itemsList.selectedItems);
}
}
})
}
При попытке записать выбранное в событии ng-select и в методе ts я, к сожалению, получаю тот же результат,Больше всего беспокоит то, что оба они имеют selected = true
, что приводит к обнаружению изменения вопроса (по моему мнению) или угловой ошибке жизненного цикла:
//(change)="onSomeEvent($event)"
onSomeEvent(event) {
console.log(this.ngSelect.itemsList.selectedItems)
}
...
this.subscribeToFilterObservable() {
...
console.log(this.ngSelect.itemsList.selectedItems)
}
Консоль браузера
0:
disabled: undefined
htmlId: "a2c971f2062e"
index: 5
label: "NANII"
marked: false
selected: true
value: {
id: "7f612ba9-be1c-4ac3-a0c8-952688ceb7a8", name: "OmaeWaMouShindeiru"
}
__proto__: Object
length: 1
__proto__: Array(0)