RC3 で、受け入れられた回答が機能しないことがわかりました。しかし、私はこれに対処する方法を見つけました。私にとっては、コンポーネントをアップグレードするために ngFor が MDL componentHandler の実行をいつ終了したかを知る必要があります。
まず、ディレクティブが必要です。
upgradeComponents.directive.ts
import { Directive, ElementRef, Input } from '@angular/core';
declare var componentHandler : any;
@Directive({ selector: '[upgrade-components]' })
export class UpgradeComponentsDirective{
@Input('upgrade-components')
set upgradeComponents(upgrade : boolean){
if(upgrade) componentHandler.upgradeAllRegistered();
}
}
次にこれをコンポーネントにインポートし、ディレクティブに追加します
import {UpgradeComponentsDirective} from './upgradeComponents.directive';
@Component({
templateUrl: 'templates/mytemplate.html',
directives: [UpgradeComponentsDirective]
})
ここで、HTML で「upgrade-components」属性を true に設定します。
<div *ngFor='let item of items;let last=last' [upgrade-components]="last ? true : false">
この属性が true に設定されている場合、@Input() 宣言の下でメソッドが実行されます。私の場合、それは componentHandler.upgradeAllRegistered() を実行します。ただし、選択したものには何でも使用できます。ngFor ステートメントの「last」プロパティにバインドすることで、終了時に実行されます。
[attr.upgrade-components] を使用する必要はありませんが、これは真正なディレクティブであるため、ネイティブ属性ではありません。