したがって、これは 2 in 1 の質問です。
まず、コンポーネント html 内の要素が読み込まれたときに関数を起動しようとしています。私はそれをさまざまな方法で試しました<div [onload]="myFunction()">
. 私の推測では、これは進むべき道ではありませんが、適切に機能させるのに十分な知識がありません。また、要素をパラメーターとして送信したいと思います。たとえば、実行<div #myDiv (click)="myFunction(myDiv)">
は機能しますが、明らかに、これは上記の要素のオンロードでは発生しません。ここでの適切な方法は何ですか、またはquerySelectorを実行する義務があります...
次は、コンポーネント内の ElementRef の注入に関する質問です。さて、ドキュメントによると、「nativeElement」プロパティを使用するのは適切ではありません。理由がよくわかりません。コンポーネント内の要素への参照を持つことは良いことですよね? それとも、関心事の分離を監督していますか? 私の最初の質問がオプションでない場合、この要素参照を使用して、OnInit クラスの ngOnInit 関数で目的のオンロード起動要素の querySelection を実行したいので、質問しています。
angular2 のドキュメントは完全ではないため、すべての情報を歓迎します。ありがとうございました。
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>