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 相关文章推荐
dwr spring的集成实现代码
Mar 22 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
Oct 20 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
Nov 12 Javascript
JavaScript中Math对象方法使用概述
Jan 02 Javascript
jQuery实现的Div窗口震动特效
Jun 09 Javascript
jQuery的deferred对象详解
Nov 12 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
Aug 13 Javascript
jQuery实现简单的文件上传进度条效果
Mar 26 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
Nov 25 Javascript
jQuery模拟下拉框选择对应菜单的内容
Mar 07 Javascript
js获取ip和地区
Mar 10 Javascript
vue基于better-scroll仿京东分类列表
Jun 30 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 has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
Python 探针的实现原理
2016/04/23 Python
python中的随机函数小结
2018/01/27 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
Python进阶之全面解读高级特性之切片
2019/02/19 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
Python中format()格式输出全解
2019/04/12 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
Python configparser模块操作代码实例
2020/06/08 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
python中实现词云图的示例
2020/12/19 Python
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
应用化学专业职业生涯规划书
2014/01/22 职场文书
优秀信贷员先进事迹
2014/01/31 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
小学生安全演讲稿
2014/04/25 职场文书
工作目标责任书
2014/07/23 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
单位综合评价意见
2015/06/05 职场文书
课程设计感想范文
2015/08/11 职场文书
win10安装配置nginx的过程
2021/03/31 Servers
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang
Java获取字符串编码格式实现思路
2022/09/23 Java/Android