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中的delete介绍
Sep 02 Javascript
ajax异步刷新实现更新数据库
Dec 03 Javascript
jQuery之过滤元素操作小结
Nov 30 Javascript
jquery插件开发之实现jquery手风琴功能分享
Mar 10 Javascript
初识Javascript小结
Jul 16 Javascript
原生JS简单实现ajax的方法示例
Nov 29 Javascript
微信小程序实现鼠标拖动效果示例
Dec 01 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
Aug 16 Javascript
Vue 中 filter 与 computed 的区别与用法解析
Nov 21 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
Dec 16 Javascript
基于redis的小程序登录实现方法流程分析
May 25 Javascript
JavaScript与JQuery框架基础入门教程
Jul 15 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
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
JavaScript内核之基本概念
2011/10/21 Javascript
php跨域调用json的例子
2013/11/13 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
angularjs 页面自适应高度的方法
2018/01/17 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
2018/09/14 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
python写入并获取剪切板内容的实例
2018/05/31 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
python生成多个只含0,1元素的随机数组或列表的实例
2018/11/12 Python
python使用正则筛选信用卡
2019/01/27 Python
python快排算法详解
2019/03/04 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
置业顾问岗位职责
2015/02/09 职场文书
2015年助残日活动总结
2015/03/27 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
Python预测分词的实现
2021/06/18 Python
java设计模式--原型模式详解
2021/07/21 Java/Android
Java数组详细介绍及相关工具类
2022/04/14 Java/Android