第一步,新建组件:

ionic g component product-img-list

命令执行成功之后项目中生成的文件:

第二步:生成文件解析:

①product-img-list.ts

import { Component, Input } from '@angular/core';

@Component({
selector: 'product-img-list',
templateUrl: 'product-img-list.html'
})
export class ProductImgListComponent {
//传入的参数
@Input() infos;
@Input() showView;
constructor() {
console.log(this.infos);
}
}

②product-img-list.html

<ion-grid [ngClass]="{'product-img': showView=='img','product-list':showView=='list'}">
<ion-row>
<ion-col col-6 col-sm-4 col-md-3 col-lg-3 col-xl-3 *ngFor="let p of infos">
<div class="p-des">
<img src={{p.images[0].url}} />
<p class="name">{{p.productName}}</p>
<p class="price">
<ion-icon name="aperture"></ion-icon>{{p.integral}}+{{p.vipPrice|PRICE}}</p>
</div>
</ion-col>
</ion-row>
</ion-grid>

③components.module.ts

import { NgModule } from '@angular/core';
import { EditUpdateNumberComponent } from './edit-update-number/edit-update-number';
import { ProductImgListComponent } from './product-img-list/product-img-list';
import { OrderAddressComponent } from './order-address/order-address'; @NgModule({
declarations: [
EditUpdateNumberComponent,
ProductImgListComponent,
OrderAddressComponent,
OrderAddressComponent],
imports: [],
exports: [
EditUpdateNumberComponent,
ProductImgListComponent,
OrderAddressComponent,
OrderAddressComponent]
})

第三步,在需要使用组件的页面添加一下代码:

<ion-content>
<!-- 传入组件需要的数据infos / showView 与组件中标明传入的属性一致 -->
<product-img-list [infos]="infos" [showView]="viewStyle"></product-img-list>
<ion-infinite-scroll [enabled]="isShouldEnable" (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>

第四步,在需要使用该组件的页面的module.ts 文件的declarations中导入ProductImgListComponent ;

至此,运行正常,组件使用完成;

but

如果一个页面需要使用多个组件的时候,就需要在declarations中导入多个组件(EditUpdateNumberComponent、ProductImgListComponent……),无形中增加了代码量与后期维护成本。

So,不在declarations中单个导入组件,我们选择在需要使用该组件的页面的module.ts 文件的imports中导入ComponentsModule。运行报错!

这个报错的元素跟我们在组件中使用的元素有关,因为我在组件的html文件中国使用了ion-col标签元素。因此,我们需要导入相应的模块IonicModule,修改components.module.ts文件如下:

import { NgModule } from '@angular/core';
import { IonicModule } from 'ionic-angular';
import { EditUpdateNumberComponent } from './edit-update-number/edit-update-number';
import { ProductImgListComponent } from './product-img-list/product-img-list';
import { OrderAddressComponent } from './order-address/order-address'; @NgModule({
declarations: [
EditUpdateNumberComponent,
ProductImgListComponent,
OrderAddressComponent],
imports: [IonicModule,AppPipeModule],
    exports: [
EditUpdateNumberComponent,
ProductImgListComponent,
OrderAddressComponent]
})
export class ComponentsModule { }

根据组件需要导入相应的依赖即可。例如我在组件中使用了管道PRICE,需要导入再导入AppPipeModule

最后,在需要使用组件的页面的module.ts文件的imports中导入ComponentsModule即可。

ionic2+Angular 组件(多个组件)浅谈的更多相关文章

  1. 浅谈Vue响应式(数组变异方法)

    很多初使用Vue的同学会发现,在改变数组的值的时候,值确实是改变了,但是视图却无动于衷,果然是因为数组太高冷了吗? 查看官方文档才发现,不是女神太高冷,而是你没用对方法. 看来想让女神自己动,关键得用 ...

  2. 【Unity游戏开发】浅谈 NGUI 中的 UIRoot、UIPanel、UICamera 组件

    简介 马三最近换到了一家新的公司撸码,新的公司 UI 部分采用的是 NGUI 插件,而之前的公司用的一直是 Unity 自带的 UGUI,因此马三利用业余时间学习了一下 NGUI 插件的使用,并把知识 ...

  3. Android安全开发之启动私有组件漏洞浅谈

    0x00 私有组件浅谈 android应用中,如果某个组件对外导出,那么这个组件就是一个攻击面.很有可能就存在很多问题,因为攻击者可以以各种方式对该组件进行测试攻击.但是开发者不一定所有的安全问题都能 ...

  4. 浅谈Vue不同场景下组件间的数据交流

    浅谈Vue不同场景下组件间的数据“交流”   Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完 ...

  5. 浅谈surging服务引擎中的rabbitmq组件和容器化部署

    1.前言 上个星期完成了surging 的0.9.0.1 更新工作,此版本通过nuget下载引擎组件,下载后,无需通过代码build集成,引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎 ...

  6. 【Vue】浅谈Vue不同场景下组件间的数据交流

    浅谈Vue不同场景下组件间的数据“交流”   Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完 ...

  7. 【原】从一个bug浅谈YUI3组件的资源加载

    篇前声明:为了不涉及业务细节,篇内信息统一以某游戏,某功能代替 前不久,某游戏准备内测客户端,开发人员测试过程中发现某功能突然不灵了,之前的测试一切ok,没有发现任何异常,第一反应是,游戏内浏览器都是 ...

  8. Extjs6 组件浅谈

    一.Component组件 一个 Ext JS 应用的界面由一个或多个叫做 组件的控件组成. 所有的组件都是 Ext.Component 类的子类,这个类可以允许参与包含实例化.渲染.自动大小和位置以 ...

  9. 浅谈vue学习之组件通信

    vue用组件化简化了我们编写代码的复杂度,组件之间经常会出现数据传递的情况,那么组件之间是怎样通信的呢? 使用props传递数据 组件实例的作用域是孤立的.这意味着不能 (也不应该) 在子组件的模板内 ...

  10. 浅谈vue父子组件之间的传值

    前言:本章主要说下父子组件的传值,为商品列表组件之间的传值做一个基础预热.Github:https://github.com/Ewall1106/mall(请选择分支chapter23) 1.父组件向 ...

随机推荐

  1. PHP批量去除bom头代码的小工具

    在 aitecms 群里有网友抱怨了好几天说本地的验证码一直无法显示,后来听说解决了,问其如何解决的,说是去除了文件 bom 就好了.后来百度到一篇文章也说 dedecms 的验证码不能显示,某次解决 ...

  2. 关于Vue的路由、脚手架笔记

    在页面引入vue-router.js文件,开始配置路由 <div id="box"> <ul><li> <a v-link="{ ...

  3. 【编程技巧】alert vs Ext.Msg.alert

    alert会阻塞程序的运行. Ext.Msg.alert是异步的,它的调用并不会停止浏览器中代码的执行.

  4. eclipse出现错误:he type java.util.Map$Entry cannot be resolved. It is indirectly referenced

    eclipse出现错误:he type java.util.Map$Entry cannot be resolved. It is indirectly referenced jre 换成6的就好了选 ...

  5. This is probably because there is no OLE editor registered against the type of file you were trying to open.

    Reason: This is probably because there is no OLE editor registered against the type of file you were ...

  6. 2018/1/27 每日一学 最长不降序子序列的O(n*logn)算法

    手动维护一个数组模拟即可,233-- 可以使用algorithm中的lower_bound(相当于二分) 代码如下: #include<cstdio> #include<algori ...

  7. ClearCase新增文件

    原文地址:http://blog.csdn.net/ace_fei/article/details/7531376 大家应该都知道在clearcase上新增文件是通过以下过程来生成的: clearto ...

  8. 【原创】python实现视频内的face swap(换脸)

    1.准备工作,按博主的环境为准 Python 3.5 Opencv 3 Tensorflow 1.3.1 Keras 2 cudnn和CUDA,如果你的GPU足够厉害并且支持的话,可以选择安装 那就先 ...

  9. awk匹配以aaa开头,以bbb结尾的内容,同时aaa和bbb之间还包含ccc

    如果是匹配以A开头,以B结尾的内容,同时A和B之间还包含C的这种怎么做?比如 [root@localhost ~]#cat file aaa grge ddd bbb aaa gege ccc bbb ...

  10. 【转】shell学习笔记(二) ——shell变量

    在shell中有3种变量:系统变量,环境变量和用户变量,其中系统变量在对参数判断和命令返回值判断时会使用,环境变量主要是在程序运行时需要设置,用户变量在编程过程中使用量最多. 1 系统变量  变量名 ...