HTML
<exchange></exchange>
<exchange></exchange>
TS
@Component({
selector: 'exchange',
templateUrl: 'exchange.component.html',
})
export class ExchangeComponent implements OnInit {
ngOnInit() {
interval(10000).subscribe(x => {
console.log(x)});
}
}
我调用该组件两次,但我不希望间隔每 10 秒运行两次。 我希望它只工作一次
也许像这样简单:
在服务文件中存储一个变量,以根据其值执行某些操作。
shouldSubscribe: boolean = false;
在您的组件中:
ngOnInit() {
if(!this.someService.shouldSubscribe) {
interval(10000).subscribe(x => {console.log(x)});
} else {
this.someService.shouldSubscribe = true;
}
}
另一种方法是将属性传递给组件的一个实例,并将其用作检查:
<exchange [shouldSubscribe]="true"></exchange>
<exchange></exchange>
在组件中:
@Input() shouldSubscribe: boolean;
在生命周期钩子中:
if(this.shouldSubscribe) {
// do want you want
}
在你的问题中,你问过如何防止组件再次初始化你不能这样做(如果你跳过编写ngOnInit
默认情况下它会执行,因为它是一个生命周期钩子(。