To jest pytanie 2 w 1.Jak mogę odpalać zdarzenia ładowania dla elementów w html komponentu w angular2
Po pierwsze, próbuję uruchomić funkcję, gdy element w html składników ładuje się. Próbowałem na wiele sposobów, takich jak: <div [onload]="myFunction()">
to jednak powoduje, że funkcja jest wywoływana wiele razy, 10 to dokładna. Domyślam się, że to nie jest droga, ale nie jestem dostatecznie zaznajomiony, aby działała prawidłowo. Również chciałbym wysłać element jako parametr. Na przykład wykonanie <div #myDiv (click)="myFunction(myDiv)">
działa, ale oczywiście nie jest uruchamiane z obciążeniem tego elementu. Co jest właściwym sposobem tutaj, lub jestem zobowiązany do zrobienia querySelector ...
Następnym pytaniem jest wstrzyknięcie elementu Element w komponent. Teraz, the docs, powiedz mi, że używanie właściwości nativeElement nie jest do końca dobrym pomysłem. Naprawdę nie rozumiem dlaczego. Posiadanie odniesienia do elementu w twoim komponencie to dobra rzecz, nieprawdaż? Czy mogę nadzorować separację rzeczy obawy? Pytam, ponieważ jeśli moje pierwsze pytanie nie jest opcją, chciałbym użyć tego odnośnika do elementu, aby wykonać querySelection moich pożądanych elementów uruchamiania onload w funkcji ngOnInit klasy OnInit.
Wszystkie informacje są mile widziane, ponieważ dokumentacja angular2 nie jest kompletna. Dziękuję Ci.
export class HomeComponent implements OnInit
{
public categories: Category[];
public items: Item[];
constructor
(
public element: ElementRef,
private _categoryService: CategoryService,
private _itemService: ItemService,
private _router: Router
){}
public registerDropdown(element:HTMLElement): void
{
console.log(element);
}
private getCategories(): void
{
this._categoryService.getAll().then((categories:Category[])=> this.categories = categories);
}
private getItems(): void
{
this._itemService.getAll().then((items:Item[])=> this.items = items);
}
public ngOnInit(): any
{
this.getCategories();
this.getItems();
}
}
<div id="home">
<div id="search">
<div class="container">
<!-- div in question, the [ngModel] is a shot in the dark -->
<div #myDiv class="dropdown category" [ngModel]="registerDropdown(myDiv)">
<span class="placeholder">Selecteer categorieën</span>
<div class="the-drop">
<ul class="ul">
<li *ngFor="#category of categories">
<input type="checkbox" />{{category.long}}
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
Czy Twój "div" jest składnikiem samym w sobie? czy może to być? Czy mógłbyś również opublikować odpowiedni komponent i kod szablonu? – SnareChops
Nie jest, element div jest po prostu wewnątrz komponentu. I tak, daj mi chwilkę. – Ken
Czy "div" może być komponentem, czy też byłoby to wbrew twojemu projektowi? To, o co prosisz * jest * możliwe, ale próbuję uzyskać zdjęcie, więc mogę polecić * najlepszy * sposób. – SnareChops