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 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
Dec 11 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
Jan 12 Javascript
JavaScript定义类的几种方式总结
Jan 06 Javascript
jQuery中:eq()选择器用法实例
Dec 29 Javascript
JavaScript实现更改网页背景与字体颜色的方法
Feb 02 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
Aug 27 Javascript
jquery实现具有嵌套功能的选项卡
Feb 12 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
Oct 11 Javascript
JavaScript简单编程实例学习
Feb 14 Javascript
使用vue实现HTML页面生成图片的方法
Mar 12 Javascript
Vue绑定用户接口实现代码示例
Nov 04 Javascript
vue实现树状表格效果
Dec 29 Vue.js
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中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
php cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
BOM与DOM的区别分析
2010/10/26 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
JS 实现微信扫一扫功能
2018/09/14 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
Python中的默认参数实例分析
2018/01/29 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
Python笔记之工厂模式
2019/11/20 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
师范毕业生求职自荐信
2013/09/25 职场文书
自我鉴定模板
2013/10/29 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
Go语言入门exec的基本使用
2022/05/20 Golang