美文网首页
使用angular2的自定义组件

使用angular2的自定义组件

作者: Nico_zhang | 来源:发表于2016-09-28 09:57 被阅读0次

为了减少代码的编写,将复用率高的代码组件化,是angular提倡的一种方式。在angular1中,自定义组件还是比较复杂的。但是在angular中,就显得相当简单。

1.自定义组件

创建一个ts文件,以引用ionic2+highcharts为例

import {Component,ElementRef,AfterViewInit,OnDestroy,ViewChild,ContentChild} from '@angular/core';
import * as Highcharts from 'highcharts';//引入hightcharts
import {ApiengineService} from '../../providers/apiengine-service/apiengine-service'   //自定义的调用api接口

@Component({
  selector:'shop-chart',  // 在模版中使用<shop-chart></shop-chart>直接调用
  template: '<div #shopChart></div>',
  providers:[ApiengineService]
})
export class ShopChart implements AfterViewInit, OnDestroy{
  constructor(public apiengine:ApiengineService){}
//调用自定义接口,获取图表参数
  loadData():any{
      return new Promise((resolve,reject)=>{
        this.apiengine.getH("api.assister.shopChartMonth",{}).then(data=>{
            if(data['errno'] === 0){
                resolve(data['data']);
            }
        }).catch((err)=>{
            reject(err)
        })
      })
  }
  @ViewChild("shopChart") public chartEl:ElementRef;
  private _chart: any;
  ngAfterViewInit(){
      this.loadData().then((data)=>{
        let opts: any = data;
        //本应用为webapp,为方便日后对图表的更新,故将hightcharts的主要参数opts通过api方式获取
        if (this.chartEl && this.chartEl.nativeElement) {
            opts.chart.renderTo = this.chartEl.nativeElement;
            this._chart = new Highcharts.Chart(opts);
        }
      });
  }
  ngOnDestroy() {
    this._chart.destroy();
  }
}

通过以上,就可以实现一个自定义的组件<shop-chart>

2. 使用

在需要使用的ts文件中,添加以下代码

import {ShopChart} from '../../shopChart';

在@Component中添加directives

@Component{
  ...
  directives:[ShopChart]
}

再通过@ViewChild方式将组件导入

@ViewChild(ShopChart) shopChart:ShopChart;

最后html部分直接使用

<shop-chart></shop-chart>

3.效果图

做了个demo,请忽略图表


4.遗憾

目前就发现这个方式可以顺利实现在segement下切换展现图表。每次切换时都会调用api,感觉不是很好。目前也是初学angular2,还不能完全理解ViewChild/ViewChildren/ContentChild等的区别和具体使用方法。后续有更好的方法将更新。也希望各位大神能给给出更好的解决方案。感激不尽。

相关文章

  • 自己总结的Angular2组建通信

    组件之间的通信 这里简单的记录自己在angular2中,使用组件通信的一些方法。方便自己以后的使用。 一、组件之间...

  • 自定义组件

    创建自定义组件 使用自定义组件

  • 使用angular2的自定义组件

    为了减少代码的编写,将复用率高的代码组件化,是angular提倡的一种方式。在angular1中,自定义组件还是比...

  • React组件的生命周期学习笔记

    创建新组件的API 使用自定义组件1(类似DOM组件) 使用自定义组件2(工厂方法) 注意:React.DOM.*...

  • 微信小程序-自定义组件

    一、自定义组件介绍 微信小程序提供了自定义组件扩展机制,允许我们使用自定义组件的方式来构建页面。 自定义组件可以使...

  • react自定义组件中使用ref

    一、自定义组件使用ref并且透传子组件ref 自定义组件中使用ref需要用到react的2个hooks:1.for...

  • 小程序的自定义组件

    小程序允许我们使用自定义组件的方式来构建页面。 自定义组件 1. 创建自定义组件 类似于页面,一个自定义组件由 j...

  • Angular2 组件的使用

    创建组件需要三步: 1.从 @angular/core 引入 Component 装饰器 2.创建一个类,并用 @...

  • angular2组件投影(ng-content)样式

    在前面的问题汇总的第四个里,介绍过angular2的组件投影,也就是我们在使用组件的时候,父组件可以用属性...

  • v-model

    使用自定义事件的表单输入组件自定义事件可以用来创建自定义的表单输入组件,使用 v-model 来进行数据双向绑定。...

网友评论

      本文标题:使用angular2的自定义组件

      本文链接:https://www.haomeiwen.com/subject/jrbcyttx.html