<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
        主站蜘蛛池模板: 日韩免费高清播放器| 日韩毛片免费一二三| 亚洲视频在线免费播放| 亚洲国产一区在线| 免费国产黄网站在线观看视频| 国产亚洲精品a在线观看app| 日本高清不卡aⅴ免费网站| 久久亚洲精品无码| 69av免费观看| 亚洲人成自拍网站在线观看| 精品免费久久久久久成人影院| 亚洲aⅴ无码专区在线观看春色| 国产男女猛烈无遮挡免费视频 | 亚洲色成人四虎在线观看| 国内外成人免费视频| 美国免费高清一级毛片| 亚洲AV无码乱码在线观看性色扶| 九九全国免费视频| 精品亚洲成a人片在线观看| 青青青免费国产在线视频小草| 亚洲日韩精品无码专区加勒比☆| 日韩免费无码一区二区视频| 特色特黄a毛片高清免费观看| 久久精品国产亚洲av麻豆| 91精品国产免费久久久久久青草| 99亚洲男女激情在线观看| 国产午夜亚洲精品国产成人小说| 亚洲精品免费观看| 亚洲一久久久久久久久| 亚洲无码在线播放| 一二三四影视在线看片免费 | 香蕉视频亚洲一级| 日本亚洲欧洲免费天堂午夜看片女人员 | 久久精品国产亚洲αv忘忧草 | 日日摸夜夜添夜夜免费视频| 亚洲AV美女一区二区三区| 在线a人片天堂免费观看高清| 一区二区三区免费看| 亚洲国产成人久久综合一区| 免费中文字幕不卡视频| 91精品手机国产免费|