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 相关文章推荐
JavaScript 对象链式操作测试代码
Apr 25 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
Oct 15 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
Dec 10 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
Jun 09 Javascript
浅谈JavaScript实现面向对象中的类
Dec 09 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
Dec 31 Javascript
r.js来合并压缩css文件的示例
Apr 26 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
May 07 Javascript
jQuery层叠选择器用法实例分析
Jun 28 jQuery
微信小程序 腾讯地图SDK 获取当前地址实现解析
Aug 12 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
Dec 30 jQuery
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
PHP如何编写易读的代码
2007/07/10 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
PHP安全之register_globals的on和off的区别
2020/07/23 PHP
jquery中对表单的基本操作代码
2010/07/29 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
读jQuery之一(对象的组成)
2011/06/11 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
总结python爬虫抓站的实用技巧
2016/08/09 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
实例详解Python装饰器与闭包
2019/07/29 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
使用python-pptx包批量修改ppt格式的实现
2020/02/14 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
自我鉴定模板
2013/10/29 职场文书
简单而又朴实的个人求职信分享
2013/12/12 职场文书
大课间活动制度
2014/01/18 职场文书
公务员职业生涯规划书范文  
2014/01/19 职场文书
大学生求职信
2014/06/17 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
会计工作岗位职责
2015/02/03 职场文书
尼克胡哲观后感
2015/06/08 职场文书
javascript实现计算器功能详解流程
2021/11/01 Javascript