この記事では、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" } ] }
効果は次のようになります:
でも、 puppiesListCmp コンポーネントが、次のように、データが変更されていない場合に子犬の名前と色のみを表示するなど、さまざまなニーズに応えられることを願っています:
これがこの記事の焦点です。ユーザー定義のテンプレートを実装する必要があります。
今度はコンポーネント テンプレートをハードコーディングせず、ユーザーが外部から入力できるようにします。
まず、コンポーネント テンプレート:
<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 についてはここで確認できます。FQ が必要です) を使用して外部 (puppiesListCmp コンポーネントに関連する) カスタム テンプレートを取得し、それを ngForTemplate に割り当てます。つまり、この部分:
<p> <span>{{puppy.name}}</span> <span>{{puppy.age}}</span> <span>{{puppy.color}}</span> </p>
は、以前のようにコンポーネント内でハードコーディングされなくなりましたが、親コンポーネント内でユーザーによってカスタマイズされ、その後、Angular のコンテンツ プロジェクションを使用して、puppiesListCmp コンポーネント内に Go を投影します。 。次のようになります:
//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> ` })
エフェクトは次のようになります:
このようなコンポーネントは非常に柔軟で、必要なエフェクトにカスタマイズできるため、コンポーネントの再利用が実現します。
上記は私が皆さんのためにまとめたもので、将来的に皆さんのお役に立てれば幸いです。
関連記事: uAngularjs Promise 例解説 Excel をエクスポートする 5 つのメソッドを詳しく解説 JavaScript 実装ファイルをローカルメソッドに以上がAngular によるコンテンツ プロジェクションを使用して ngForOf テンプレートをコンポーネントに入力する手順は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。