I was looking at issue at: https://stackoverflow.com/a/44737636/973651
I've a div with an ngIf
condition, and I'd like to capture an event for when the div
gets rendered. Supposedly, you can use the AfterContentInit
event.
The article I cited above, shows an example, which I've replicated but no luck in getting it to work.
I don't know what I'm doing wrong, but I can't get this to work. I get no errors, but it doesn't work for me.
My directive is defined as:
import { AfterContentInit, EventEmitter, Output, Directive } from '@angular/core';
@Directive({ selector: '[after-if]' })
export class AfterIfDirective implements AfterContentInit {
@Output('after-if')
public after: EventEmitter<AfterIfDirective> = new EventEmitter();
public ngAfterContentInit(): void {
debugger;
setTimeout(() => {
// timeout helps prevent unexpected change errors
this.after.next(this);
});
}
}
In my page component I import.
import { AfterIfDirective } from '../directives/after-if';
@NgModule({
providers: [],
imports: [NgModel, BrowserAnimationsModule, HttpClientModule,
AfterIfDirective],
exports: [NgModel, BrowserAnimationsModule, AfterIfDirective]
})
and in the html:
<div *ngIf="chkTearline.checked; else NotTearline" (after-if)="Clicked()">
what am I missing?
Does this not work in Angular 5?
Clicked() {
console.log('something got clicked');
}