Это ошибка?

лкиваюсь с простой проблемой, которая имеет хакерское решение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")?

Plnkr

Ответы на вопрос(0)

Ваш ответ на вопрос