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函数
Sep 08 Javascript
js实现同一个页面多个渐变效果的方法
Apr 10 Javascript
详解JavaScript中循环控制语句的用法
Jun 03 Javascript
JQuery动态添加Select的Option元素实现方法
Aug 29 Javascript
js原生实现FastClick事件的实例
Nov 20 Javascript
使用vue.js实现联动效果的示例代码
Jan 10 Javascript
原生js实现鼠标跟随效果
Feb 28 Javascript
JS中的Replace()传入函数时的用法详解
Sep 11 Javascript
es6新特性之 class 基本用法解析
May 05 Javascript
vue中的数据绑定原理的实现
Jul 02 Javascript
Angular4 Select选择改变事件的方法
Oct 09 Javascript
js实现简单的贪吃蛇游戏
Apr 23 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小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
js 实现复制到粘贴板的功能代码
2010/05/13 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
使用Nodejs连接mongodb数据库的实现代码
2017/08/21 NodeJs
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
Python PO设计模式的具体使用
2019/08/16 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
武夷山导游词
2015/02/03 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
Redis Cluster集群动态扩容的实现
2021/07/15 Redis
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫