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的消息提示插件 DivAlert之旅(二)
Apr 01 Javascript
javascript面向对象编程代码
Dec 19 Javascript
javascript感应鼠标图片透明度显示的方法
Feb 24 Javascript
canvas实现图片根据滑块放大缩小效果
Feb 24 Javascript
带你了解session和cookie作用原理区别和用法
Aug 14 Javascript
说说AngularJS中的$parse和$eval的用法
Sep 14 Javascript
Express使用html模板的详细代码
Sep 18 Javascript
详解VUE2.X过滤器的使用方法
Jan 11 Javascript
Vue自定义指令实现checkbox全选功能的方法
Feb 28 Javascript
浅谈redux以及react-redux简单实现
Aug 28 Javascript
浅析vue-router中params和query的区别
Dec 24 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
Sep 24 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 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
2015/08/18 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
Python中的XML库4Suite Server的介绍
2015/04/14 Python
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
Python编程实现正则删除命令功能
2017/08/30 Python
深入浅出学习python装饰器
2017/09/29 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
python识别验证码的思路及解决方案
2020/09/13 Python
如何通过python计算圆周率PI
2020/11/11 Python
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
介绍一下木马病毒的种类
2015/07/26 面试题
EJB的角色和三个对象
2015/12/31 面试题
目标责任书范本
2014/04/16 职场文书
销售竞赛活动方案
2014/08/23 职场文书
科学育儿宣传标语
2014/10/08 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
Go获取两个时区的时间差
2022/04/20 Golang