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 相关文章推荐
JS 自定义函数缺省值的设置方法
May 05 Javascript
JavaScript实现按Ctrl键打开新页面
Sep 04 Javascript
js正则匹配出所有图片及图片地址src的方法
Jun 08 Javascript
Node.js实现JS文件合并小工具
Feb 02 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
Apr 29 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
Dec 02 Javascript
详解基于angular路由的requireJs按需加载js
Jan 20 Javascript
Vue中父组件向子组件通信的方法
Jul 11 Javascript
荐书|您有一份JavaScript书单待签收
Jul 21 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
Jan 02 Javascript
Vuex新手的理解与使用详解
May 31 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
May 10 Javascript
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
第六节--访问属性和方法
2006/11/16 PHP
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
php实现文件下载代码分享
2014/08/19 PHP
php如何获取文件的扩展名
2015/10/28 PHP
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python读取html中指定元素生成excle文件示例
2014/04/03 Python
详解Python中用于计算指数的exp()方法
2015/05/14 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
Django 路由控制的实现代码
2018/11/08 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
python在不同条件下的输入与输出
2020/02/13 Python
python利用opencv实现颜色检测
2021/02/23 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
实现向右循环移位
2014/07/31 面试题
拓展策划方案
2014/06/03 职场文书
中学生运动会口号
2014/06/07 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书