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 相关文章推荐
extjs DataReader、JsonReader、XmlReader的构造方法
Nov 07 Javascript
封装html的select标签的js操作实例
Jul 02 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
Apr 14 Javascript
js获取地址栏中传递的参数(两种方法)
Feb 08 Javascript
JS中的三个循环小结
Jun 20 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
Jul 10 Javascript
React全家桶环境搭建过程详解
May 18 Javascript
解决vue axios的封装 请求状态的错误提示问题
Sep 25 Javascript
详解vue中router-link标签所必备了解的属性
Apr 15 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
Sep 05 Javascript
vue实现随机验证码功能(完整代码)
Dec 10 Javascript
vue Cli 环境删除与重装教程 - 版本文档
Sep 11 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
PHP 面向对象实现代码
2009/11/11 PHP
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
解析PHP中ob_start()函数的用法
2013/06/24 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
JavaScript中的其他对象
2008/01/16 Javascript
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
5个javascript的数字格式化函数分享
2011/12/07 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
[03:48]大碗DOTA
2019/07/25 DOTA
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
django model object序列化实例
2020/03/13 Python
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
护理自荐信
2013/10/22 职场文书
精彩自我鉴定
2014/01/16 职场文书
财务简历的自我评价
2014/03/05 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
党员作风建设自查报告
2014/10/23 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS