Я думаю, что есть два варианта для
<app-mycomp cleanup></app-mycomp>
1) Директива знает свой хост-компонент.Таким образом, вы можете вставить хост в конструктор
...
constructor(private host: MycompComponent) { }
...
2), и если директива не знает хост.Это немного сложно. Хост-компонент должен предоставить себя
@Component({
selector: 'app-mycomp',
templateUrl: './mycomp.component.html',
styleUrls: ['./mycomp.component.css'],
providers: [{
provide: 'cleanable',
useExisting: forwardRef(()=> MycompComponent)
}]
})
export class MycompComponent extends Cleanable implements OnInit { ... }
Теперь вы можете добавить его также в директиву
constructor(@Inject('cleanable') private host: Cleanable) { ... }
Наконец, в директиве вы можете определитькрючки жизненного цикла.
Вот блик стека