Czy można zidentyfikować, czy komponent Angular2 (tutaj AppComponent) jest całkowicie załadowany (w tym ViewChilds), gdy w szablonie występuje warunek ngIf ładuje dziecko.Jak zidentyfikować, czy komponent Angular2 jest w pełni załadowany (w tym ViewChilds), gdy istnieje ngIf w szablonie
Numer referencyjny: Angular 2 @ViewChild annotation returns undefined Ten przykład pochodzi z powyższego odwołania. Dzięki kenecaswell
import {Component, ViewChild, OnInit, AfterViewInit} from 'angular2/core';
import {ControlsComponent} from './child-component-1';
import {SlideshowComponent} from './slideshow/slideshow.component';
@Component({
selector: 'app',
template: `
<div *ngIf="controlsOn">
<controls ></controls>
<slideshow></slideshow>
</div>
`,
directives: [SlideshowComponent, ControlsComponent]
})
export class AppComponent {
@ViewChild(ControlsComponent) controls:ControlsComponent;
@ViewChild(SlideshowComponent) slide:SlideshowComponent;
controlsOn:boolean = false;
ngOnInit() {
console.log('on init', this.controls);
// this returns undefined
}
ngAfterViewInit() {
console.log('on after view init', this.controls);
// this returns null
}
}
ngOnInit & & ngAfterViewInit są wypalane przed elementów podrzędnych są ładowane ze względu na stan ngIf
muszę określić, kiedy SlideshowComponent & ControlsComponent są ładowane i wykonać działanie w oparciu o to.
Mam hacky rozwiązanie, które nie jest odpowiednie, gdy istnieje wiele ViewChilds (które są innego typu) - Korzystanie z emitera zdarzeń, aby poinformować, gdy dziecko jest ładowany.
Zamieszczam to pytanie, ponieważ po wielu godzinach badań nie było odpowiedniego rozwiązania.
Witam, Mój problem polega na tym, że mam 3 komponenty (ViewChild) innego typu i chcę zidentyfikować, kiedy wszystkie trzy komponenty (ViewChild) są załadowane i wykonać akcję. Zaktualizowałem pytanie. Dzięki – tymspy
Jestem na tym, pozwól mi zobaczyć, co mogę zrobić .... –
OK, problem jest spowodowany przez '* ngIf' nie pozwalając dzieciom składników zainicjować na ViewInit, teraz' ViewChildren' ma jeszcze więcej sensu, ponieważ może powiedzieć, kiedy dzieci się inicjują, zobacz [to PLUNKER] (http://plnkr.co/edit/HevkaqUyqmkAnvgPwm7v?p=preview) –