私はA2で少し遊んでいましたが、私の問題はすべてが初期化され、A2内で実行され、htmlの*ngIf
私が理解していないのは、なぜ、またはどのように私の望む結果を得るかということです。ngIf内のIDで要素を取得できません
@Component({
moduleId: module.id,
selector: 'test',
templateUrl: 'test.component.html' })
export class TestComponent implements OnInit {
test: any;
settest():void{
//this.test = {test: 1}; --This works using ngAfterViewInit
//This causes the console.log in ngAfterViewInit to be null
this.route.params
.switchMap((params: Params) => this.testService.getTest(params['id']))
.subscribe(test => {
this.test = test;
});
}
ngOnInit(): void
{
this.settest();
console.log(document.getElementById('test1')); --Null
console.log(document.getElementById('test2')); -- Not NUll
}
ngAfterViewInit(): void
{
console.log(document.getElementById('test1')); --Null
console.log(document.getElementById('test2')); -- Not NUll
}
}
とtest.component.html
<div *ngIf="test">
<div id="test1"></div>
</div>
<div id="test2"></div>
私は理解していないことも、null
test2
として戻っngOnInit
console.log
test1
のリターンで、理由は次のテストコンポーネントを使用して
素子。私はGoogleマップAPIの一部
EDITは、いくつかの更新として、それと対話することができ、私はそれは、その*ngIf
内にある知っているが、私は理由を理解していないか、そのレンダリングされた後、その要素にアクセスするために何をすべきか私が愚かに除外したコード。
'ngAfterViewInit'でもまだNULLが返されます。コードでもっと遊ぼうと、api呼び出しの非同期性のために私はそれを伝えることができます(私は私の答えを私が愚かにそれを除外して更新します)。私が非同期呼び出しを取り除くと 'ngAfterViewInit()'が動作し、 'subscribe'を保っていればそれは動作しません。 – Doug