Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在何处初始化角度4分量中的变量-表达式ChangedTerithasBeenCheckedError_Angular_Typescript_Rxjs - Fatal编程技术网

Angular 在何处初始化角度4分量中的变量-表达式ChangedTerithasBeenCheckedError

Angular 在何处初始化角度4分量中的变量-表达式ChangedTerithasBeenCheckedError,angular,typescript,rxjs,Angular,Typescript,Rxjs,我有一个带布尔变量的角4分量。初始值取决于输入流 TypeScript要求我声明变量,如下例所示。如果没有它,此.isLoading将触发错误 在这一点上,我还不知道它的值,所以我只声明它,而不指定变量 export class SomeComponent implements OnInit { @Input() someStream$; isLoading: boolean; ngOnInit() { someStream.subscribe((someData) =&g

我有一个带布尔变量的角4分量。初始值取决于输入流

TypeScript要求我声明变量,如下例所示。如果没有它,此.isLoading将触发错误

在这一点上,我还不知道它的值,所以我只声明它,而不指定变量

export class SomeComponent implements OnInit {
  @Input() someStream$;
  isLoading: boolean;

  ngOnInit() {
    someStream.subscribe((someData) => {
      // Code to determine the value for isLoading
      this.isLoading = true; 
    });
  }
}
稍后,当我知道该值时,我会将其设置为true或false。但随后“ExpressionChangedTerithasBeenCheckedError”开始出现


设置这些“默认”值的“正确方法”是什么。

我假设isLoading是您知道请求是否完成的标志。 在这个场景中,我所做的是将加载初始化为false:

export class SomeComponent implements OnInit {
  @Input() someStream$;
  // Initialized as false.
  isLoading: boolean = false;

  ...
}
如果isLoading标志有更多的逻辑,我会改变与组件交互的方式,将@Input()直接更改为someData,并在其父级中处理异步逻辑


希望有帮助。

尝试ngOnChages()生命周期而不是ngOnInit(),它可能会解决您的问题。下一步在什么时候、什么地方调用someStream?@MohamedGara在同一个onInit块中是一些检查URL参数的逻辑。如果所有必需的参数都在那里,它将启动http调用并设置isLoading。我已经尝试过这个方法,但当isLoading在ngOnInit中的“同一刻度”内计算为true时,它不起作用。我得到的是表达式ChangedTerithasBeenCheckedError。我担心将变量向上移动到父级只会将问题移动到另一个组件。有点奇怪,因为我有与您完全相同的代码,并且不会引发任何错误。可以肯定的是,您的订阅是否只触发一次?可能在同一个周期中,可观察到的对象正在发送新的值。