У меня есть объект film
, и у него есть свойство genre
.Я хочу получать фильмы по жанрам во время выполнения в пользовательском выпадающем списке FormControl
.
Поэтому я определяю new BehaviourSubject(<int>) genre
и, если он изменится во время выполнения, получим значение в методе ngOnChanges()
.И после этого он попадает в API.Но я хочу проверить значение жанра до этого.Например, если genre.getValue = 0
не вызывать API.
Пример кода приведен ниже.Как я могу проверить значение?
private _genre;
private selectedGenre = new BehaviorSubject(0);
@Input()
set genre(value: any) {
this._genre = value;
this.selectedGenre.next(this._genre);
}
films: any[];
ngOnInit() {
this.selectedGenre.distinctUntilChanged().combineLatest(
this.selectedGenre.distinctUntilChanged(), (_genre) => {
return {
genre: _genre
}
}
)
.switchMap(t => this.service.getFilmsByGenre(genre))
.subscribe(result => {
if (result) this.films = result;
});
}
ngOnChanges(changes: { [propName: string]: SimpleChange }) {
if (changes['genre']) {
this.films = null;
this.filmCtrl.setValue(null);
this.selectedGenre.next(changes['genre'].currentValue || 0);
}
}