Quindi questa è una domanda 2 in 1.come attivare gli eventi onload per gli elementi all'interno del componente html in angular2
In primo luogo, sto provando a generare una funzione quando un elemento, all'interno di componenti html, viene caricato. L'ho provato in molti modi, come ad esempio: <div [onload]="myFunction()">
, ma ciò comporta che la funzione venga chiamata più volte, 10 per la precisione. La mia ipotesi è che questa non è la strada da percorrere, ma non ho abbastanza familiarità per farlo funzionare correttamente. Vorrei anche inviare l'elemento come parametro. Ad esempio fare <div #myDiv (click)="myFunction(myDiv)">
funziona, ma ovviamente questo non è licenziato su carico di detto elemento. Che cosa è il modo corretto qui, o sono obbligato a fare una querySelector ...
Avanti è una domanda che coinvolge l'iniezione del ElementRef all'interno del componente. Ora, the docs dimmi che usare la proprietà 'nativeElement' non è esattamente la strada da percorrere. Non capisco davvero perché. Avere un riferimento all'elemento nel componente è una buona cosa, non è vero? O sto supervisionando una separazione tra le preoccupazioni? Ti sto chiedendo perché se la mia prima domanda non è un'opzione, mi piacerebbe usare questo riferimento di elemento per fare una querySelection dei miei elementi di attivazione onload desiderati nella funzione ngOnInit della classe OnInit.
Tutte le informazioni sono benvenute, visto che i documenti angular2 non sono del tutto completi. Grazie.
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>
Il componente 'div' è di per sé? o potrebbe essere? Potresti anche pubblicare il componente e il codice modello pertinenti – SnareChops
Non lo è, il div è semplicemente all'interno del componente. E sì, dammi un secondo. – Ken
Potrebbe il 'div' essere un componente o sarebbe in qualche modo contro il tuo disegno? Quello che stai chiedendo * è * possibile, ma sto cercando di ottenere un'immagine in modo da poter consigliare il * migliore * modo. – SnareChops