Я хочу загружать данные, только если пользователь видит конкретный компонент, который загружает данные. Поэтому не загружайте, пока компонент не станет видимым.
У меня есть этот шаблон:
<button (click)="showMyCompontente()">Click me</button>
<app-other-component *ngIf="show"></app-other-component>
С этим кодом TypeScript:
export class MyComponent implements OnInit {
show = false;
ngOnInit() {
}
showMyCompontente() {
this.show = !this.show;
}
}
А суть вот в чем:
@Component({
selector: 'app-other-component',
})
export class OtherComponent implements OnInit {
ngOnInit() {
this.load();
}
load() {
// needs to load datas only if the user see the component
}
}
Как добиться в OtherComponent
запускать this.load()
только если компонент виден пользователю? Я хочу снова перезагрузить данные, если пользователь скроет компонент и снова покажет его.
Мне нужно решение внутри компонента, чтобы обнаружить, что он стал видимым или исчез. Это потому, что у меня много компонентов, вызывающих друг друга во многих вариациях.
Какие хуки жизненного цикла Angular срабатывают только тогда, когда пользователь показывает компонент?
ngAfterViewInit()
? В противном случае вам придется предоставить дополнительный код, чтобы уточнить, как вы показываете и скрываете компонент. - person Kokodoko   schedule 13.01.2020