Mic*_*lis 8 angular2-directives angular
我有一个名为EasyBoxComponent的组件,以及一个带有此viewchild的指令
@ViewChild(EasyBoxComponent) myComponent: EasyBoxComponent;
Run Code Online (Sandbox Code Playgroud)
this.myComponent总是未定义的
我认为这是正确的语法..
我的HTML是
<my-easybox></my-easybox>
<p myEasyBox data-href="URL">My Directive</p>
Run Code Online (Sandbox Code Playgroud)
import { Directive, AfterViewInit, HostListener, ContentChild } from '@angular/core';
import { EasyBoxComponent } from '../_components/easybox.component';
@Directive({
selector: '[myEasyBox]'
})
export class EasyBoxDirective implements AfterViewInit {
@ContentChild(EasyBoxComponent) myComponent: EasyBoxComponent;
@ContentChild(EasyBoxComponent) allMyCustomDirectives;
constructor() {
}
ngAfterViewInit() {
console.log('ViewChild');
console.log(this.myComponent);
}
@HostListener('click', ['$event'])
onClick(e) {
console.log(e);
console.log(e.altKey);
console.log(this.myComponent);
console.log(this.allMyCustomDirectives);
}
}Run Code Online (Sandbox Code Playgroud)
Jul*_*ova 10
ContentChild使用AfterContentInit接口,因此模板应该像:
<p myEasyBox data-href="URL">
<my-easybox></my-easybox>
</p>
Run Code Online (Sandbox Code Playgroud)
和指令:
@Directive({
selector: '[myEasyBox]'
})
export class EasyBoxDirective implements AfterContentInit {
@ContentChild(EasyBoxComponent) myComponent: EasyBoxComponent;
@ContentChild(EasyBoxComponent) allMyCustomDirectives;
ngAfterContentInit(): void {
console.log('ngAfterContentInit');
console.log(this.myComponent);
}
constructor() {
}
@HostListener('click', ['$event'])
onClick(e) {
console.log(e);
console.log(e.altKey);
console.log(this.myComponent);
console.log(this.allMyCustomDirectives);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9338 次 |
| 最近记录: |