Skip to content

Instantly share code, notes, and snippets.

@AndrewAllison
Last active December 2, 2017 10:19
Show Gist options
  • Save AndrewAllison/2e8984a5dac142261511aee9dd5d5439 to your computer and use it in GitHub Desktop.
Save AndrewAllison/2e8984a5dac142261511aee9dd5d5439 to your computer and use it in GitHub Desktop.
RXJS using Take while
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
// Common rxjs operators
import 'rxjs/add/operator/takeWhile';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule);
import { Component, OnInit, OnDestroy } from '@angular/core';
import { SearchCriteriaService } from 'app/search/main/search-panel/search-criteria.service';
import { SearchCriteria } from 'app/search/types/search-criteria.type';
import { Subscription } from 'rxjs/Subscription';
//import 'rxjs/add/operator/takeWhile';
@Component({
selector: 'app-search-panel-criteria',
templateUrl: './search-panel-criteria.component.html',
styleUrls: ['./search-panel-criteria.component.scss']
})
export class SearchPanelCriteriaComponent implements OnDestroy, OnInit {
isActive = true;
searchCriteria = [];
constructor(public searchCriteriaService: SearchCriteriaService) { }
ngOnInit() {
this.searchCriteriaService.items$
.takeWhile(() => this.isActive)
.subscribe((searchCriteria: SearchCriteria[]) => {
this.searchCriteria = searchCriteria;
});
}
onRemoveClicked(criteria: SearchCriteria) {
this.searchCriteriaService.removeItem(criteria);
}
ngOnDestroy() {
this.isActive = false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment