博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Angular 2] implements OnInit, OnDestory for fetching data from server
阅读量:6501 次
发布时间:2019-06-24

本文共 2279 字,大约阅读时间需要 7 分钟。

Link: https://angular.io/docs/js/latest/api/core/OnInit-interface.html, https://www.youtube.com/watch?v=bY92HFyaBvo

 

export interface OnInit

exported from  defined in 

Implement this interface to execute custom initialization logic after your directive's data-bound properties have been initialized.

ngOnInit is called right after the directive's data-bound properties have been checked for the first time, and before any of its children have been checked. It is invoked only once when the directive is instantiated.

 

Keep it as a best pratices that implements OnInit, OnDestroy. Then inside ngOnInit, we call service to fetch data back. And in ngOnDestroy, we unsubscribe the Observable.

 

import {Component, ElementRef, EventEmitter, Output, OnInit, OnDestroy} from 'angular2/core';import {Observable} from 'rxjs/Rx';import {SearchServcie} from './SearchServcie';@Component({    selector: 'search-input',    template: ``})export class SearchInput implements OnInit, OnDestroy{    @Output() loading = new EventEmitter();    @Output() results = new EventEmitter();    private _subscription;    constructor(        public youtube: SearchServcie,        private el:ElementRef) {}    ngOnDestroy() {        // Unsubscribe the Observabler        console.log('ngOnDestroy');      if(this._subscription)             this._subscription.unsubscribe();    }    ngOnInit() {        // Fetch the data from server        console.log("init");        const keyup$ = Observable.fromEvent(this.el.nativeElement, 'keyup');        const searchInput$ = keyup$            .debounceTime(500)            .map((e:any) => {                return e.target.value.trim();            })            .distinctUntilChanged()            .filter((val:string) => {                return val.length > 1;            })            .do(() => {                this.loading.emit(true);            });        const query$ = searchInput$            .switchMap( (query) => this.youtube.doSearch(query));        this._subscription = query$.subscribe((videos) => {                this.results.emit(videos);                this.loading.emit(false);            }, (err) => {                console.log(err);                this.loading.emit(false);            }, () => {                this.loading.emit(false);            });    }}

 

转载地址:http://zrvyo.baihongyu.com/

你可能感兴趣的文章
环形动画加载视图AnimatedCircleLoadingView
查看>>
Centos 7使用vsftpd搭建FTP服务器
查看>>
tcpdump抓包文件提取http附加资源
查看>>
linux下SVN不允许空白日志提交
查看>>
第2周第1课
查看>>
docker制作镜像篇(基于容器)
查看>>
山寨c 标准库中的getline 函数
查看>>
shell时间
查看>>
pfSense book之2.4安装指南
查看>>
org.springframework.data.redis 一次连接获取特定key所有k-v(pipeline)
查看>>
[译稿]同步复制提议 2010-09
查看>>
windows 自动化目录大纲(各企业架构不一样,按需选择)
查看>>
我的友情链接
查看>>
【Visual C++】游戏开发笔记十三 游戏输入消息处理(二) 鼠标消息处理
查看>>
我的友情链接
查看>>
Java 使用 Redis
查看>>
JPA常用注解
查看>>
Java基础学习总结(1)——equals方法
查看>>
Maven学习总结(6)——Maven与Eclipse整合
查看>>
HTML5:理解head
查看>>