Angular2 ng-templatesで次のキーワードはどのように使用されますか
$implicit
の目的は何ですか?let-<attribute>
と$implicit
の関係は何ですか?ng-template
からlet-name
でローカル変数を定義できます
angularがcreateEmbeddedView
を呼び出してテンプレートを作成する場合、ng-template
内で使用されるコンテキストを渡すこともできます。
コンテキストオブジェクトでキー$implicit
を使用すると、その値がデフォルトとして設定されます。したがって、次のように書くと:
vcRef.createEmbeddedView(template, { $implicit: 'value' })
テンプレートがあります
<ng-template let-foo>
{{ foo }}
</ng-template>
その後、私たちはそれについてのように考えることができます
<ng-template let-foo="$implicit">
{{ foo }}
</ng-template>
foo
はvalue
と等しくなります
一方、次のようなコンテキストがある場合:
{ bar: 'value' }
次のような変数を宣言する必要があります。
let-foo="bar"
複数の変数の場合、以下のようなことを行う必要があります。テンプレートは次のようになります。
<ng-template [ngTemplateOutlet]="template" [ngTemplateOutletContext]="{$implicit: 'Hello', key2: 'value2', key3: 'value3'}"> </ng-template>
それから
<ng-template #template let-default let-key2="key2" let-key3="key3">
{{default}}
{{key2}}
{{key3}}
</ng-template>
したがって、出力は
default = Hello
key2 = value2
key3 = value3
変数を参照しているコンテナからテンプレートに変数のみを渡す必要がある場合は、使用できます
<ng-container *ngTemplateOutlet="deleteClient;context: firstName">
</ng-container>
そして、このように使用します。
<ng-template #deleteClient let-client="firstName">
Are you sure? Want to remove {{ client }} !
</ng-template>
オブジェクトをテンプレートに渡す必要がある場合、次のように使用できます
<ng-container *ngTemplateOutlet="deleteClient;context: { $implicit: client }">
</ng-container>
そして、このように使用します。
<ng-template #deleteClient let-client>
Are you sure? Want to remove {{ client.firstName }} {{ client.lastName }}!
</ng-template>