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'); }
setTimeoutto see if it's firing in there.