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 相关文章推荐
JTrackBar水平拖动效果
Jul 15 Javascript
原生JS实现加入收藏夹的代码
Oct 24 Javascript
js输出阴历、阳历、年份、月份、周示例代码
Jan 29 Javascript
jquery.Callbacks的实现详解
Nov 30 Javascript
微信小程序 特效菜单抽屉效果实例代码
Jan 11 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
May 02 Javascript
Vue列表页渲染优化详解
Jul 24 Javascript
JS实现评价的星星功能
Aug 20 Javascript
Bootstrap实现翻页效果
Nov 27 Javascript
自定义PC微信扫码登录样式写法
Dec 12 Javascript
微信小程序绘制图片发送朋友圈
Jul 25 Javascript
初学vue出现空格警告的原因及其解决方案
Oct 31 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
php在文件指定行中写入代码的方法
2012/05/23 PHP
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
[05:06]2017亚洲邀请赛DAC回顾片
2017/04/19 DOTA
Python赋值语句后逗号的作用分析
2015/06/08 Python
python绘制双柱形图代码实例
2017/12/14 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
如何使用python写截屏小工具
2020/09/29 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
使用索引有什么好处
2016/07/27 面试题
应届生简历中的自我评价
2014/01/13 职场文书
英语系毕业生求职信
2014/07/13 职场文书
鼋头渚导游词
2015/02/05 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server