所以这是一个二合一的问题。
首先,我试图在组件 html 中的元素加载时触发一个函数。我尝试了很多方法,例如:<div [onload]="myFunction()">
这会导致函数被多次调用,准确地说是 10 次。我的猜测是这不是要走的路,但我不够熟悉以使其正常工作。我也想将元素作为参数发送。例如,做<div #myDiv (click)="myFunction(myDiv)">
确实有效,但显然这不是在加载所述元素时触发的。这里的正确方法是什么,或者我有义务做一个 querySelector ...
接下来是一个涉及在组件内注入 ElementRef 的问题。现在,文档告诉我,使用 'nativeElement' 属性并不是完全可行的方法。我真的不明白为什么。在组件中引用元素是一件好事,不是吗?还是我在监督关注点分离?我问是因为如果我的第一个问题不是一个选项,我想使用这个元素引用在 OnInit 类的 ngOnInit 函数中对我想要的 onload 触发元素进行查询选择。
欢迎所有信息,看到 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>