使用数组和@Inputs,Angular 2 Change Detection延迟了几秒钟

时间:2016-10-22 05:44:32

标签: javascript arrays angular angular2-changedetection angular2-inputs

我知道Angular 2中有大量有关变化检测的信息,而且我一直在竭尽全力绕过它。我认为我的问题可能与Array的可变性属性有关,但我不确定。所以我们有这些"桶#34;从Firebase进来,我将它们推入一个阵列,然后传入一个子组件。这一切都有效,并且Array很快就会被填充,但它需要几秒钟才能在页面上呈现。 (但是当我尝试添加一些setIntervals和setTimeouts时,它的工作速度要快得多,但除非有一个干净的解决方案,否则我不会那样做。)有没有人理解幕后发生了什么事情足以向我解释并帮助我吗?谢谢!

public class DisplayPattern{

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.print("Enter an integer and I will display a pattern for you: ");
        int n = input.nextInt();

        List<Integer> indentList = new ArrayList<Integer>();

        int maxLength= totalSpace(n) + (n-1);

        for(int i = 1; i <= n; i++ ){
            int eachDigitSize = totalSpace(i);
            int indent = maxLength - (eachDigitSize+i-1);
            indentList.add(indent);
        }

        for(int row = 1; row<=n; row++){
            int indentation = indentList.get(row-1);

            for(int space=indentation; space>=0; space--){
                System.out.print(" ");
            }

            for(int number = row; number > 0; number--){
                System.out.print(number + " ");
            }
            System.out.println();
      }
}

    private static int totalSpace(int n) {

           int MAX_ROWS = n;
           int count = 0;

           for(int i = MAX_ROWS; i >= 1; i--){
              int currNum = i;
              int digit;
              while(currNum > 0){
                digit=currNum % 10;

                   if(digit>=0){
                      count++;
                      currNum = currNum/10;
                }
            }
        }
        return count;
      }
}

1 个答案:

答案 0 :(得分:0)

请参阅此处的解决方案#2:angular2 firebase realtime updating not working

“简单地将定义放在angular2的类中,而不是在外面,并且一切都按照我最初的假设开始工作。”