Я играл с A2 на некоторое время, и я понимаю, что моя проблема связана с последовательностью, в которой все инициализируется и запускается внутри A2 и из-за *ngIf
в html, но я не понимаю, почему и как получить желаемый результат.Не удалось получить элемент по ID в ngIf
С помощью следующего тестового компонента:
@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>
То, что я не понимаю, почему, даже в ngOnInit
в console.log
из test1
возвращает null
, где, как test2
возвращается в элемент. Я знаю, что это потому, что его в *ngIf
, но я не понимаю, почему и что делать, чтобы получить доступ к этому элементу, как только его визуализации, чтобы я мог взаимодействовать с ним как часть API Google Maps
EDIT Обновлено некоторые код, который я бы глупо исключал.
Все еще возвращает NULL, даже в 'ngAfterViewInit'. Играя больше с кодом, насколько я могу это объяснить из-за асинхронного вызова api (который я обновлю свой ответ, когда я глупо исключил его). Если я удалю асинхронный вызов, то работает 'ngAfterViewInit()', если я сохраню 'subscribe', то это не так. – Doug