ホームページ >ウェブフロントエンド >jsチュートリアル >AngularでngForOfをコンポーネントに入力する方法
今回は、Angular が ngForOf をコンポーネントに入力する方法を説明します。 Angular が ngForOf をコンポーネントに入力するときの 注意事項 とは何ですか。実際のケースを見てみましょう。
今、子犬のリストを表示するコンポーネント puppiesListCmp を作成します:
//puppies-list.component.ts @Component({ selector: 'puppies-list', template: ` <p *ngFor="let puppy of puppies"> <span>{{puppy.name}}</span> <span>{{puppy.age}}</span> <span>{{puppy.color}}</span> </p> ` }) 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" } ] }効果は次のようになります:
<p *ngFor="let puppy of puppies"> <span>{{puppy.name}}</span> <span>{{puppy.age}}</span> <span>{{puppy.color}}</span> </p>は次と同等です:
<ng-template ngFor let-puppy [ngForOf]="puppies"> <p> <span>{{puppy.name}}</span> <span>{{puppy.age}}</span> <span>{{puppy.color}}</span> </p> </ng-template>次に、 @ContentChild (@ContentChild の場合) を使用します。ここでは、外部 (puppiesListCmp コンポーネントに関連する) カスタム テンプレートを取得し、それを ngForTemplate に割り当てるには FQ が必要です。つまり、この部分:
<p> <span>{{puppy.name}}</span> <span>{{puppy.age}}</span> <span>{{puppy.color}}</span> </p>は以前のようにコンポーネント内でハードコーディングされなくなり、親コンポーネント内でユーザーによってカスタマイズされ、Angular の 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> <p> <span>{{puppy.name}}</span> <span>{{puppy.age}}</span> <span>{{puppy.color}}</span> </p> </ng-template> </puppies-list> ` })効果は同じです:
//app.component.ts @Component({ selector: 'my-app', template: ` <puppies-list [puppies]="puppies"> <ng-template let-puppy> <p> <span>{{puppy.name}}</span> <span>{{puppy.color}}</span> </p> </ng-template> </puppies-list> ` })効果は次のようになります:
Baidu の BAE を通じて vue プロジェクトを公開する方法
axios http リクエストが vue2 で使用できない理由
以上がAngularでngForOfをコンポーネントに入力する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。