コンポーネントが動的にロードされると、テンプレート内のバインディングが一切動作しないという問題が発生します。これと同様に、ngOnInit
メソッドはトリガされません。動的にロードされたコンポーネントでバインディングが機能しない
loadView() {
this._dcl.loadAsRoot(Injected, null, this._injector).then(component => {
console.info('Component loaded');
})
}
動的にロードされたコンポーネント
import {Component, ElementRef, OnInit} from 'angular2/core'
declare var $:any
@Component({
selector: 'tester',
template: `
<h1>Dynamically loaded component</h1>
<span>{{title}}</span>
`
})
export class Injected implements OnInit {
public title:string = "Some text"
constructor(){}
ngOnInit() {
console.info('Injected onInit');
}
}
これは私が間違ってそれを実装しようとするかもしれないと思う動的にロードされたコンポーネントを使用して、私の最初の時間です。
ここには、問題を示すplunkrがあります。どんな助けもありがとう。
知られている[問題](https://github.com/angular/angular/issues/6223が) 'loadAsRoot'であります。今のところ最も安全な方法は 'loadNextToLocation'か' loadIntoLocation'です。 –
@EricMartinezロードしようとしているコンポーネントはモーダルダイアログです。私がそれを読み込もうとしているコンポーネントは、 'fixed' CSSスタイルの要素の中にあるので、ダイアログは' body'タグの最初の子としてかなり読み込まれる必要があります。深くネストされたコンポーネントの中から 'loadNextToLocation'または' loadIntoLocation'を使ってこれを行うことはできますか? – garethdn
純粋なCSSで修正できると思います。すべての位置を0(上端、左端、右端、下端)に設定し、固定位置と高いz-インデックス値に設定すると、読み込まれる場所に応じてモーダルダイアログを表示できます。 –