Это ошибка?
лкиваюсь с простой проблемой, которая имеет хакерское решениеsetTimeout(...,0)
.
Глядя на этот простой код:
@Component({
selector: 'my-app',
template: `
<div>
<input value='Fill Data' type='button' (click)='fill()'/>
<span *ngFor="let o of Items" class='mySpan'>Span To Detect<br></span>
</div>
`,
})
export class App {
Items:Array<number> = new Array<number>();
fill()
{
this.Items = [1,2,3,4,5,6,7,8,9,10]
this.analyzeDom(); //this has to run here
}
analyzeDom()
{
alert($("div .mySpan").length) // "0"
//BUT if I set this hacky trick , it works
// setTimeout(function (){ alert($("div .mySpan").length)},0) // "10"
}
}
Если я нажимаю кнопку, предупреждение показывает «0». Я понимаю, почему это происходит. Потому что Angular не завершил свой цикл, чтобы фактически заполнитьngFor
.
Тем не менее - делать этот трюк сsetTimeout(..,0)
Мне кажется, это немного глупо, и я предпочитаю не верить в это.
Вопрос:
Чтоправо способ "ждать операции" в Angular? (чтобы я увидел "10")?