<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

        Angular利用內(nèi)容投射向組件輸入ngForOf模板的方法

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:17:53
        文檔

        Angular利用內(nèi)容投射向組件輸入ngForOf模板的方法

        Angular利用內(nèi)容投射向組件輸入ngForOf模板的方法:現(xiàn)在,我們寫一個(gè)組件puppiesListCmp,用于顯示小狗狗的列表: //puppies-list.component.ts @Component({ selector: 'puppies-list', template: ` <div *ngFor=let puppy of puppies> <span&g
        推薦度:
        導(dǎo)讀Angular利用內(nèi)容投射向組件輸入ngForOf模板的方法:現(xiàn)在,我們寫一個(gè)組件puppiesListCmp,用于顯示小狗狗的列表: //puppies-list.component.ts @Component({ selector: 'puppies-list', template: ` <div *ngFor=let puppy of puppies> <span&g

        現(xiàn)在,我們寫一個(gè)組件puppiesListCmp,用于顯示小狗狗的列表:

        //puppies-list.component.ts
        @Component({
         selector: 'puppies-list',
         template: `
         <div *ngFor="let puppy of puppies">
         <span>{{puppy.name}}</span>
         <span>{{puppy.age}}</span>
         <span>{{puppy.color}}</span>
         </div>
        `
        })
        export class puppiesListCmp{
         @Input() puppies: Puppy[];
        }
        interface Puppy {
         name: string,
         age: number,
         color: string
        }

        然后這樣使用:

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

        效果就行這樣:

        但是,我希望我們的puppiesListCmp組件可以滿足不同的需求,比如在數(shù)據(jù)不變的情況下只顯示小狗狗的name和color,就像這樣:

        這就是本文的重點(diǎn)了。我們需要實(shí)現(xiàn)用戶自定義模板!

        現(xiàn)在我們不寫死組件的模板了,而是讓用戶從外部輸入!

        首先,我們的組件模板:

        <div *ngFor="let puppy of puppies">
         <span>{{puppy.name}}</span>
         <span>{{puppy.age}}</span>
         <span>{{puppy.color}}</span>
        </div>

        等價(jià)于:

        <ng-template ngFor let-puppy [ngForOf]="puppies">
         <div>
         <span>{{puppy.name}}</span>
         <span>{{puppy.age}}</span>
         <span>{{puppy.color}}</span>
         </div>
        </ng-template>

        然后,用@ContentChild(關(guān)于@ContentChild可以查看這里,需FQ)獲取到外部(相對(duì)puppiesListCmp組件而言)自定義模板,并賦給ngForTemplate。也就是說,這部分:

        <div>
         <span>{{puppy.name}}</span>
         <span>{{puppy.age}}</span>
         <span>{{puppy.color}}</span>
        </div>

        不再像之前那樣寫死在組件里了,而是由使用者在父組件中自定義,然后利用Angular的內(nèi)容投射(Content Projection),投射到puppiesListCmp組件里面。就像這樣:

        //puppies-list.component.ts
        import { Component, Input, ContentChild, TemplateRef } from '@angular/core';
        import { NgForOfContext } from '@angular/common';
        @Component({
         selector: 'puppies-list',
         template: `
        <ng-template ngFor let-puppy [ngForOf]="puppies" [ngForTemplate]="tpl"></ng-template>
        `
        })
        export class puppiesListCmp{
         @Input() puppies: Puppy[];
         @ContentChild(TemplateRef) tpl: TemplateRef<NgForOfContext<Puppy>>
        }
        interface Puppy {
         name: string,
         age: number,
         color: string
        }

        這樣我們的組件就算完成了。然后我們使用它:

        //app.component.ts
        @Component({
         selector: 'my-app',
         template: `
        <puppies-list [puppies]="puppies">
         <ng-template let-puppy>
         <div>
         <span>{{puppy.name}}</span>
         <span>{{puppy.age}}</span>
         <span>{{puppy.color}}</span>
         </div>
         </ng-template>
        </puppies-list>
        `
        })

        效果還是一樣的:

        如果我們只要顯示小狗狗的name和color,只要這樣寫就好了:

        //app.component.ts
        @Component({
         selector: 'my-app',
         template: `
        <puppies-list [puppies]="puppies">
         <ng-template let-puppy>
         <div>
         <span>{{puppy.name}}</span>
         <span>{{puppy.color}}</span>
         </div>
         </ng-template>
        </puppies-list>
        `
        })

        效果就像這樣:

        這樣的組件很靈活,想要什么樣的效果都可以定制,這就實(shí)現(xiàn)了組件的復(fù)用。

        好了,本文就到此為止了。不當(dāng)之處,歡迎指出!希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Angular利用內(nèi)容投射向組件輸入ngForOf模板的方法

        Angular利用內(nèi)容投射向組件輸入ngForOf模板的方法:現(xiàn)在,我們寫一個(gè)組件puppiesListCmp,用于顯示小狗狗的列表: //puppies-list.component.ts @Component({ selector: 'puppies-list', template: ` <div *ngFor=let puppy of puppies> <span&g
        推薦度:
        標(biāo)簽: 組件 template angular
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 91在线精品亚洲一区二区| 亚洲 综合 国产 欧洲 丝袜| 亚洲Av永久无码精品三区在线 | 在线观看免费视频资源| 人人狠狠综合久久亚洲婷婷| 国产中文字幕在线免费观看| 亚洲午夜无码片在线观看影院猛| 又大又硬又粗又黄的视频免费看| 亚洲精品tv久久久久久久久久| 永久免费观看黄网站| 亚洲五月综合缴情在线观看| 日本在线免费播放| 亚洲午夜电影在线观看| 好爽又高潮了毛片免费下载 | 亚洲精品中文字幕无乱码麻豆| 大学生一级毛片免费看| 亚洲国产精华液2020| 免费真实播放国产乱子伦| eeuss草民免费| 亚洲无删减国产精品一区| 国内精自视频品线六区免费| 亚洲偷自拍另类图片二区| 四虎影视永久免费观看网址| 国产福利免费视频 | 国产最新凸凹视频免费| 国产一精品一AV一免费| 手机在线毛片免费播放| 亚洲AV无码专区国产乱码电影 | 亚洲AV无码专区日韩| a一级爱做片免费| 亚洲黄色在线视频| 永久黄网站色视频免费观看| 免费看一级高潮毛片| 亚洲AV成人一区二区三区AV| 一二三四在线播放免费观看中文版视频| 亚洲AV日韩AV一区二区三曲| 亚洲无av在线中文字幕| 最近免费中文字幕大全视频| 久久久久久国产a免费观看不卡| 亚洲欧洲视频在线观看| 亚洲精品成人网久久久久久 |