Angular组件输入ngForOf模板的方法实例

现在,我们写一个组件puppieslistcmp,用于显示小狗狗的列表:本文主要和大家介绍了angular利用内容投射向组件输入ngforof模板的方法,希望能帮助到大家。

//puppies-list.component.ts@Component({ selector: 'puppies-list', template: `  

   {{puppy.name}}   {{puppy.age}}   {{puppy.color}}  

`})export class puppiesListCmp{ @Input() puppies: Puppy[];}interface Puppy { name: string, age: number, color: string}

登录后复制

然后这样使用:

//app.component.ts@Component({ selector: 'my-app', template: `  `})export class App{ puppies = [  {   name: "sam",   age: 0.6,   color: "yellow"  },  {   name: "bingo",   age: 1.5,   color: "black"  } ]}

登录后复制

效果就行这样:

Angular组件输入ngForOf模板的方法实例

但是,我希望我们的puppiesListCmp组件可以满足不同的需求,比如在数据不变的情况下只显示小狗狗的name和color,就像这样:

Angular组件输入ngForOf模板的方法实例

这就是本文的重点了。我们需要实现用户自定义模板!

现在我们不写死组件的模板了,而是让用户从外部输入!

首先,我们的组件模板:

   {{puppy.name}}   {{puppy.age}}   {{puppy.color}}

登录后复制

等价于:

   

    {{puppy.name}}    {{puppy.age}}    {{puppy.color}}   

登录后复制

然后,用@ContentChild(关于@ContentChild可以查看这里,需FQ)获取到外部(相对puppiesListCmp组件而言)自定义模板,并赋给ngForTemplate。也就是说,这部分:

  {{puppy.name}}  {{puppy.age}}  {{puppy.color}}

登录后复制

不再像之前那样写死在组件里了,而是由使用者在父组件中自定义,然后利用Angular的内容投射(Content Projection),投射到puppiesListCmp组件里面。就像这样:

//puppies-list.component.tsimport { Component, Input, ContentChild, TemplateRef } from '@angular/core';import { NgForOfContext } from '@angular/common';@Component({ selector: 'puppies-list', template: ``})export class puppiesListCmp{ @Input() puppies: Puppy[]; @ContentChild(TemplateRef) tpl: TemplateRef>}interface Puppy { name: string, age: number, color: string}

登录后复制

这样我们的组件就算完成了。然后我们使用它:

//app.component.ts@Component({ selector: 'my-app', template: `   

   {{puppy.name}}   {{puppy.age}}   {{puppy.color}}  

 `})

登录后复制

效果还是一样的:

Angular组件输入ngForOf模板的方法实例

如果我们只要显示小狗狗的name和color,只要这样写就好了:

//app.component.ts@Component({ selector: 'my-app', template: `   

   {{puppy.name}}   {{puppy.color}}  

 `})

登录后复制

效果就像这样:

Angular组件输入ngForOf模板的方法实例

这样的组件很灵活,想要什么样的效果都可以定制,这就实现了组件的复用。

以上就是Angular组件输入ngForOf模板的方法实例的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2785057.html

(0)
上一篇 2025年3月8日 17:19:10
下一篇 2025年3月8日 17:19:22

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue生命周期、vue实例、模板语法

    这次给大家带来vue生命周期、vue实例、模板语法,使用vue生命周期、vue实例、模板语法的注意事项有哪些,下面就是实战案例,一起来看一下。 vue从出生到现在,从一个默默小众型的框架发展成为现在国内的三大框架之一,也从最初的版本到现在的…

    编程技术 2025年3月8日
    200
  • ES6的字符串模板详解

    这次给大家带来es6的字符串模板详解,使用es6的字符串模板的注意事项有哪些,下面就是实战案例,一起来看一下。     //ES5方式:    var text = “沧海”;    var whole = “蝴蝶再美,终究飞不过” + t…

    编程技术 2025年3月8日
    200
  • angular独立作用域的使用概念

    这次给大家带来angular独立作用域的使用概念,angular独立作用域的使用注意事项有哪些,下面就是实战案例,一起来看一下。 nbsp;html>        Document             var myApp = a…

    2025年3月8日
    200
  • Angular的新手教程

    这次给大家带来angular的新手教程,angular新手教程的注意事项有哪些,下面就是实战案例,一起来看一下。 什么是UI 对于一个用户界面,它实际上包括三个主要部分: 内容:你想展现哪些信息?包括动态信息和静态信息。注意,这里的内容不包…

    2025年3月8日
    200
  • Angular和Vue.js对比分析

    Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面。当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强。如今,已有许多开发人员开始使用 Vue.js 来取代 Angular 和 Re…

    编程技术 2025年3月8日
    200
  • jQuery、Angular、node中的Promise详解

    这次给大家带来jQuery、Angular、node中的Promise详解,使用jQuery、Angular、node中Promise的注意事项有哪些,下面就是实战案例,一起来看一下。 最初遇到Promise是在jQuery中,在jQuer…

    2025年3月8日 编程技术
    200
  • angular的路由ui-router的使用详解

    这次给大家带来angular的路由ui-router的使用详解,使用angular路由ui-router的注意事项有哪些,下面就是实战案例,一起来看一下。 UI-router 安装:npm install –save angul…

    编程技术 2025年3月8日
    200
  • 在angular中$http服务需要如何使用

    这次给大家带来在angular中$http服务需要如何使用,使用angular中$http服务的注意事项有哪些,下面就是实战案例,一起来看一下。 $http服务 $http(requestConfig)只是一个封装的XMLHttpReque…

    编程技术 2025年3月8日
    200
  • 在Angular里ViewProviders和Providers的区别

    这次给大家带来在Angular里ViewProviders和Providers的区别,在Angular里使用ViewProviders和Providers的注意事项有哪些,下面就是实战案例,一起来看一下。 在Angular中使用依赖注入(D…

    2025年3月8日
    200
  • Angular怎样向组件输入ngForOf

    这次给大家带来Angular怎样向组件输入ngForOf,Angular向组件输入ngForOf的注意事项有哪些,下面就是实战案例,一起来看一下。 现在,我们写一个组件puppiesListCmp,用于显示小狗狗的列表: //puppies…

    2025年3月8日 编程技术
    200

发表回复

登录后才能评论