Angular 封装并发布组件的方法示例


Posted in Javascript onApril 19, 2018

一、封装组件

作为入门,这是一个非常简单的demo,但核心的接收使用者的输入@Input(),以及返回数据给使用者@Output()都实现了,所以有一定的借鉴意义。

目录结构:(部分目录不是框架中自动生成,二是后期添加,按照步骤进行即可。)

Angular 封装并发布组件的方法示例

具体代码:

html:(search.component.html)

<input type="text" class="form-control" 
    #info placeholder="{{information}}" > 
   
<button type="button" class="btn btn-default" 
    (click)="query(info.value);">查询</button> 
 
 
css:(search.component.css) 
 
.form-control{ 
 float: left; 
 width: 70%; 
} 
 
.btn btn-default{ 
 background-color: #41ABE9; 
}

ts:(search.component.ts)

import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core'; 
@Component({ 
 selector: 'app-search', 
 templateUrl: './search.component.html', 
 styleUrls: ['./search.component.css'] 
}) 
export class SearchComponent implements OnInit { 
 @Input() information: string;   
 @Input() url: string; 
 dataUrl: string; 
 @Output() editData = new EventEmitter<any>(); 
 
 constructor() { } 
 ngOnInit() { 
 } 
 query(info: string) { 
  this.dataUrl = this.url + '/' + info; 
  this.editData.emit(this.dataUrl); 
 } 
}

解释:@Input,接收信息。如information可以接收Html中的{{information}}的值

@Output是输出。即引用组件化的人可以拿到editData的返回值。

module:(search.module.ts)

import {SearchComponent} from './search.component' ; 
import {CommonModule} from '@angular/common'; 
import { NgModule } from '@angular/core'; 
import { FormsModule } from '@angular/forms'; 
import { HttpModule } from '@angular/http'; 
 
@NgModule({ 
 declarations: [ 
  SearchComponent 
 ], 
 imports: [ 
  CommonModule, 
  FormsModule, 
  HttpModule, 
 ], 
 providers: [], 
 exports: [SearchComponent], 
}) 
export class SearchModule { }

至此组件完成,可以通过在app.component.html中引入如下看看效果:

<h1> 
 {{information}} 
 {{dataUrl}} 
</h1> 
<div style="width: 300px;padding-left: 5px"> 
<app-search [information]="information" [url]="url" (editData)="query($event)"></app-search> 
</div>

对应app.component.ts中需要定义:

import { Component } from '@angular/core';  
@Component({ 
 selector: 'app-root', 
 templateUrl: './app.component.html', 
 styleUrls: ['./app.component.css'] 
}) 
export class AppComponent { 
 information = '输入班级名称'; 
 url= 'Class/find'; 
 dataUrl: string; 
 query(info: any) { 
  this.dataUrl = info; 
 } 
}

点击查询后效果如:

Angular 封装并发布组件的方法示例

二、发布,供大家引用

1、注册npm账号:

地址:https://www.npmjs.com

2、手动或者命令创建package.json文件

内容包括:

Angular 封装并发布组件的方法示例

3、手动或命令创建index.js文件

在添加内容前,我们调整组件的目录结构,如最上图所示,这是规范的目录结构,调整好后,添加index.js内容:

export * from './lib/search.module';

4、手动或命令创建index.d.ts文件

export {SearchModule} from './search.module';

5、Ctrl+Shift+右击(在search组件目录下)

    运行:npm login

    输入账号、密码、邮箱

    登录成功后:运行npm publish

    至此发布完成。

三、引用者调用:

1、Ctrl+Shift+右击(项目根目录)

cnpm install ng-itoo-search

2、引入到项目中

自己的Module中

Angular 封装并发布组件的方法示例

3、自己的Html中:

<app-search [information]="information" [url]="url " (editData)="query($event)"></app-search>

4、对应的ts中:

Angular 封装并发布组件的方法示例

注意:

Angular 封装并发布组件的方法示例

框中的url和ts中保持一致即可,并非必须写url,自己定义。

OK,现在完整的一个组件就开发、发布完成了。这样就可以让其他开发人员引用了。通过这样的封装,既可以实现代码的复用,又会减少项目打包的体积......是Angular的一大优点。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 学习第七课 扩展jQuery的功能 插件开发
May 17 Javascript
关于this和self的使用说明
Aug 01 Javascript
基于JQuery 的消息提示框效果代码
Jul 31 Javascript
jQuery中:checkbox选择器用法实例
Jan 03 Javascript
AngularJS入门教程之ng-class 指令用法
Aug 01 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
Feb 28 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
Mar 24 jQuery
详解Node.js项目APM监控之New Relic
May 12 Javascript
vue 虚拟dom的patch源码分析
Mar 01 Javascript
微信小程序实现折叠展开效果
Jul 19 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
Sep 21 Javascript
vue3中的组件间通信
Mar 31 Vue.js
angular第三方包开发整理(小结)
Apr 19 #Javascript
如何从零开始利用js手写一个Promise库详解
Apr 19 #Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
Apr 18 #Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
Apr 18 #Javascript
原生js实现拖拽功能基本思路详解
Apr 18 #Javascript
一个基于react的图片裁剪组件示例
Apr 18 #Javascript
JS实现对json对象排序并删除id相同项功能示例
Apr 18 #Javascript
You might like
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
Vue使用mixins实现压缩图片代码
2018/03/14 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
vue中v-for循环给标签属性赋值的方法
2018/10/18 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
小程序实现列表倒计时功能
2021/01/29 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
Python的词法分析与语法分析
2013/05/18 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
Python使用进程Process模块管理资源
2020/03/05 Python
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
陈欧广告词
2014/03/14 职场文书
文体活动实施方案
2014/03/27 职场文书
网络编辑求职信
2014/04/30 职场文书
小学生十佳少年事迹材料
2014/08/20 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
2014年财务科工作总结
2014/11/11 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
四年级语文教学反思
2016/03/03 职场文书